Пример #1
0
        private JsonToken GetValueToken()
        {
            var tokenType = _jsonReader.TokenType;
            var value     = _jsonReader.Value;

            if (tokenType == TokenType.Null)
            {
                return(JsonToken.Null);
            }

            if (tokenType == TokenType.Boolean)
            {
                return((bool)value ? JsonToken.True : JsonToken.False);
            }

            if (tokenType == TokenType.String)
            {
                return(JsonToken.String((string)value));
            }

            var converter = TypeDescriptor.GetConverter(value.GetType());
            var text      = converter.ConvertToInvariantString(value);

            if (IsNumber(tokenType))
            {
                return(JsonToken.Number(text));
            }
            else
            {
                return(JsonToken.String(text));
            }
        }
Пример #2
0
        private JsonToken GetSingleToken()
        {
            var tokenType = _jsonReader.TokenType;

            if (tokenType == TokenType.StartObject)
            {
                EnterState(State.Object);
                return(JsonToken.CurlyOpen);
            }

            if (tokenType == TokenType.EndObject)
            {
                ExitState(State.Object);
                return(JsonToken.CurlyClose);
            }

            if (tokenType == TokenType.StartArray)
            {
                EnterState(State.Array);
                return(JsonToken.SquaredOpen);
            }

            if (tokenType == TokenType.EndArray)
            {
                ExitState(State.Array);
                return(JsonToken.SquaredClose);
            }

            if (tokenType == TokenType.PropertyName)
            {
                return(JsonToken.PropertyName(_jsonReader.Value.ToString()));
            }

            _flagPostValue = true;
            return(GetValueToken());
        }