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)); } }
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()); }