public static JsonArray Parser(JsonTokenList tokenList) { JsonArray result = new JsonArray(); for (int i = 1; i < tokenList.Count() - 1; ++i) { switch (tokenList[i].Type) { case JsonTokenType.STRING: result.Add(new JsonValue(tokenList[i].Value, JsonValueType.STRING)); break; case JsonTokenType.NUMBER: result.Add(new JsonValue(Double.Parse(tokenList[i].Value), JsonValueType.NUMBER)); break; case JsonTokenType.NULL: result.Add(new JsonValue(null, JsonValueType.NULL)); break; case JsonTokenType.BOOLEAN: result.Add(new JsonValue(bool.Parse(tokenList[i].Value), JsonValueType.NUMBER)); break; case JsonTokenType.START_OBJECT: { JsonTokenList JsonObj = new JsonTokenList(); while (i < tokenList.Count()) { JsonObj.Add(tokenList[i]); if (tokenList[i].Type == JsonTokenType.END_OBJECT) { break; } ++i; } result.Add(new JsonValue(JsonObject.Parser(JsonObj), JsonValueType.OBJECT)); } break; case JsonTokenType.START_ARRAY: { JsonTokenList JsonArr = new JsonTokenList(); while (i < tokenList.Count()) { JsonArr.Add(tokenList[i]); if (tokenList[i].Type == JsonTokenType.END_ARRAY) { break; } ++i; } result.Add(new JsonValue(JsonArray.Parser(JsonArr), JsonValueType.ARRAY)); } break; } } return(result); }
public static JsonObject Parser(JsonTokenList tokenList) { bool mode = true; JsonObject result = new JsonObject(); JsonObjectItem objectItem = new JsonObjectItem(); for (int i = 1; i < tokenList.Count() - 1; ++i) { switch (tokenList[i].Type) { case JsonTokenType.COLON: mode = true; result.Add(objectItem); objectItem = new JsonObjectItem(); break; case JsonTokenType.COMMA: mode = false; break; case JsonTokenType.STRING: if (mode) { objectItem.Name = tokenList[i].Value; } else { objectItem.Value = new JsonValue(tokenList[i].Value, JsonValueType.STRING); } break; case JsonTokenType.NUMBER: objectItem.Value = new JsonValue(double.Parse(tokenList[i].Value), JsonValueType.NUMBER); break; case JsonTokenType.BOOLEAN: objectItem.Value = new JsonValue(bool.Parse(tokenList[i].Value), JsonValueType.BOOLEAN); break; case JsonTokenType.NULL: objectItem.Value = new JsonValue(null, JsonValueType.NULL); break; case JsonTokenType.START_OBJECT: { JsonTokenList JsonObj = new JsonTokenList(); while (i < tokenList.Count()) { JsonObj.Add(tokenList[i]); if (tokenList[i].Type == JsonTokenType.END_OBJECT) { break; } ++i; } objectItem.Value = new JsonValue(JsonObject.Parser(JsonObj), JsonValueType.OBJECT); } break; case JsonTokenType.START_ARRAY: { JsonTokenList JsonArr = new JsonTokenList(); while (i < tokenList.Count()) { JsonArr.Add(tokenList[i]); if (tokenList[i].Type == JsonTokenType.END_ARRAY) { break; } ++i; } objectItem.Value = new JsonValue(JsonArray.Parser(JsonArr), JsonValueType.ARRAY); } break; } } result.Add(objectItem); return(result); }