Beispiel #1
0
            public TList FromJson(IJsonContext context, IJsonReader reader)
            {
                JsonToken token = reader.GetNextToken();

                if (token == JsonToken.Null)
                {
                    return(default(TList));
                }
                if (token == JsonToken.ArrayEmpty)
                {
                    return(new TListImpl());
                }
                if (token != JsonToken.ArrayStart)
                {
                    return(ExceptionHelper.ThrowInvalidJsonException <TList>());
                }
                TListImpl result = new TListImpl();

                while (true)
                {
                    token = reader.GetNextToken();
                    if (token == JsonToken.ArrayEnd)
                    {
                        break;
                    }
                    if (token != JsonToken.Comma)
                    {
                        reader.RepeatLastToken();
                    }
                    result.Add(FromJsonItem(context, reader));
                }
                return(result);
            }
Beispiel #2
0
        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);
        }
Beispiel #3
0
            public TDictionary FromJson(IJsonContext context, IJsonReader reader)
            {
                JsonToken token = reader.GetNextToken();

                if (token == JsonToken.Null)
                {
                    return(default(TDictionary));
                }
                if (token == _emptyToken)
                {
                    return(new TDictionaryImpl());

                    ;
                }
                if (token != _startToken)
                {
                    return(ExceptionHelper.ThrowInvalidJsonException <TDictionary>());
                }
                TDictionaryImpl result = new TDictionaryImpl();

                while (true)
                {
                    token = reader.GetNextToken();
                    if (token == _endToken)
                    {
                        break;
                    }
                    if (token != JsonToken.Comma)
                    {
                        reader.RepeatLastToken();
                    }
                    result.Add(FromJsonItem(context, reader));
                }
                return(result);
            }
        public override JsonNumber FromJson(IJsonContext context, IJsonReader reader)
        {
            switch (reader.GetNextToken())
            {
            case JsonToken.Null:
                return(null);

            case JsonToken.Number:
                var value = reader.ReadValue();
                if (double.TryParse(
                        value, NumberStyles.Float, CultureInfo.InvariantCulture, out double doubleOut))
                {
                    return(new JsonNumber(doubleOut));
                }
                if (long.TryParse(
                        value, NumberStyles.Integer, CultureInfo.InvariantCulture, out long longOut))
                {
                    return(new JsonNumber(longOut));
                }
                if (BigInteger.TryParse(
                        value, NumberStyles.Integer, CultureInfo.InvariantCulture, out BigInteger bigIntegerOut))
                {
                    return(new JsonNumber(bigIntegerOut));
                }
                return(ExceptionHelper.ThrowNumberParsingFailException <JsonNumber>());

            default:
                return(ExceptionHelper.ThrowInvalidJsonException <JsonNumber>());
            }
        }
 public static void ThrowIfNotMatch(IJsonReader reader, JsonToken token)
 {
     if (reader.GetNextToken() != token)
     {
         ExceptionHelper.ThrowInvalidJsonException <object>();
     }
 }
 public override void FromJson(IJsonContext context, IJsonReader reader, out decimal instance)
 {
     if (reader.GetNextToken() != JsonToken.Number ||
         !decimal.TryParse(reader.ReadValue(), FloatNumberStyle, DefaultCultureInfo, out instance))
     {
         instance = ThrowInvalidJsonException <decimal>();
     }
 }
Beispiel #7
0
 public override void FromJson(IJsonContext context, IJsonReader reader, out Guid instance)
 {
     if (reader.GetNextToken() != JsonToken.String ||
         !Guid.TryParse(reader.ReadValue(), out instance))
     {
         ThrowInvalidJsonException <object>();
     }
 }
Beispiel #8
0
 public override void FromJson(IJsonContext context, IJsonReader reader, out ushort instance)
 {
     if (reader.GetNextToken() != JsonToken.Number ||
         !ushort.TryParse(reader.ReadValue(), IntegerNumberStyle, DefaultCultureInfo, out instance))
     {
         instance = ThrowInvalidJsonException <ushort>();
     }
 }
Beispiel #9
0
            public T?FromJson(IJsonContext context, IJsonReader reader)
            {
                var token = reader.GetNextToken();

                if (token == JsonToken.Null)
                {
                    return(null);
                }
                reader.RepeatLastToken();
                return(_mapper.FromJson(context, reader));
            }
 public override void FromJson(IJsonContext context, IJsonReader reader, out DateTimeOffset instance)
 {
     if (reader.GetNextToken() == JsonToken.Number &&
         long.TryParse(reader.ReadValue(), IntegerNumberStyle, DefaultCultureInfo, out long parsed))
     {
         instance = parsed.ToDateTime();
     }
     else
     {
         instance = ThrowInvalidJsonException <DateTimeOffset>();
     }
 }
 public override void FromJson(IJsonContext context, IJsonReader reader, out TimeSpan instance)
 {
     if (reader.GetNextToken() == JsonToken.Number &&
         long.TryParse(reader.ReadValue(), IntegerNumberStyle, DefaultCultureInfo, out long parsed))
     {
         instance = TimeSpan.FromTicks(parsed);
     }
     else
     {
         ThrowInvalidJsonException <object>();
     }
 }
Beispiel #12
0
        public TClass FromJson(IJsonContext context, IJsonReader reader)
        {
            var token = reader.GetNextToken();

            if (token == JsonToken.Null)
            {
                return(default(TClass));
            }
            if (token == JsonToken.ObjectEmpty)
            {
                return(_instanceProvider());
            }
            if (token != JsonToken.ObjectStart)
            {
                return(ExceptionHelper.ThrowInvalidJsonException <TClass>());
            }
            var result = _instanceProvider();

            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);
                if (_setters.TryGetValue(key, out IJsonGetterSetter <TClass> setter))
                {
                    setter.FromJson(context, reader, result);
                }
            }
            return(result);
        }
Beispiel #13
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);
        }
Beispiel #14
0
        public override void FromJson(IJsonContext context, IJsonReader reader, out char instance)
        {
            var token = reader.GetNextToken();

            if (token == JsonToken.String)
            {
                var val = reader.ReadValue();
                instance = val.Length == 1 ? val[0] : ThrowInvalidJsonException <char>();
            }
            else
            {
                instance = ThrowInvalidJsonException <char>();
            }
        }
Beispiel #15
0
        public override JsonString FromJson(IJsonContext context, IJsonReader reader)
        {
            switch (reader.GetNextToken())
            {
            case JsonToken.Null:
                return(null);

            case JsonToken.String:
                return(new JsonString(reader.ReadValue()));

            default:
                return(ExceptionHelper.ThrowInvalidJsonException <JsonString>());
            }
        }
Beispiel #16
0
        public override void FromJson(IJsonContext context, IJsonReader reader, out bool instance)
        {
            switch (reader.GetNextToken())
            {
            case JsonToken.False:
                instance = false;
                break;

            case JsonToken.True:
                instance = true;
                break;

            default:
                instance = ThrowInvalidJsonException <bool>();
                break;
            }
        }
        public override JsonBoolean FromJson(IJsonContext context, IJsonReader reader)
        {
            switch (reader.GetNextToken())
            {
            case JsonToken.Null:
                return(null);

            case JsonToken.False:
                return(JsonBoolean.False);

            case JsonToken.True:
                return(JsonBoolean.True);

            default:
                return(ExceptionHelper.ThrowInvalidJsonException <JsonBoolean>());
            }
        }
Beispiel #18
0
        public override void FromJson(IJsonContext context, IJsonReader reader, out string instance)
        {
            var token = reader.GetNextToken();

            if (token == JsonToken.Null)
            {
                instance = null;
            }
            else if (token == JsonToken.String)
            {
                instance = reader.ReadValue();
            }
            else
            {
                instance = ThrowInvalidJsonException <string>();
            }
        }
        public override JsonElement FromJson(IJsonContext context, IJsonReader reader)
        {
            switch (reader.GetNextToken())
            {
            case JsonToken.ObjectStart:
                reader.RepeatLastToken();
                return(JsonObjectMapper.FromJson(context, reader));

            case JsonToken.String:
                return(new JsonString(reader.ReadValue()));

            case JsonToken.False:
                return(JsonBoolean.False);

            case JsonToken.True:
                return(JsonBoolean.True);

            case JsonToken.Null:
                return(JsonNull.Null);

            case JsonToken.Number:
                return(JsonNull.Null);

            case JsonToken.ArrayStart:
                reader.RepeatLastToken();
                return(JsonArrayMapper.FromJson(context, reader));

            case JsonToken.ObjectEmpty:
                return(new JsonObject());

            case JsonToken.ArrayEmpty:
                return(new JsonArray());

            default:
                return(ExceptionHelper.ThrowInvalidJsonException <JsonElement>());
            }
        }
Beispiel #20
0
 public override JsonNull FromJson(IJsonContext context, IJsonReader reader)
 {
     return(reader.GetNextToken() == JsonToken.Null
         ? JsonNull.Null
         : ExceptionHelper.ThrowInvalidJsonException <JsonNull>());
 }