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);
        }
Exemple #2
0
        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);
        }