public override JsonArray FromJson(IJsonContext context, IJsonReader reader) { var token = reader.GetNextToken(); if (token == JsonToken.Null) { return(null); } if (token == JsonToken.ArrayEmpty) { return(new JsonArray()); } if (token != JsonToken.ArrayStart) { return(ExceptionHelper.ThrowInvalidJsonException <JsonArray>()); } var result = new JsonArray(); var elements = result.GetArrayElements(); while (true) { token = reader.GetNextToken(); if (token == JsonToken.ArrayEnd) { break; } if (token != JsonToken.Comma) { reader.RepeatLastToken(); } var value = JsonElementMapper.FromJson(context, reader); elements.Add(value); } return(result); }
public override JsonObject FromJson(IJsonContext context, IJsonReader reader) { var token = reader.GetNextToken(); if (token == JsonToken.Null) { return(null); } if (token == JsonToken.ObjectEmpty) { return(new JsonObject()); } if (token != JsonToken.ObjectStart) { return(ExceptionHelper.ThrowInvalidJsonException <JsonObject>()); } var result = new JsonObject(); while (true) { token = reader.GetNextToken(); if (token == JsonToken.ObjectEnd) { break; } if (token != JsonToken.Comma) { reader.RepeatLastToken(); } JsonContextHelper.ThrowIfNotMatch(reader, JsonToken.String); var key = reader.ReadValue(); JsonContextHelper.ThrowIfNotMatch(reader, JsonToken.Colon); var value = JsonElementMapper.FromJson(context, reader); result.GetObjectMembers().Add(key, value); } return(result); }