Example #1
0
    public void ValueFormatting()
    {
      StringBuilder sb = new StringBuilder();
      StringWriter sw = new StringWriter(sb);

      using (JsonWriter jsonWriter = new JsonWriter(sw))
      {
        jsonWriter.WriteStartArray();
        jsonWriter.WriteValue('@');
        jsonWriter.WriteValue("\r\n\t\f\b?{\\r\\n\"\'");
        jsonWriter.WriteValue(true);
        jsonWriter.WriteValue(10);
        jsonWriter.WriteValue(10.99);
        jsonWriter.WriteValue(0.99);
        jsonWriter.WriteValue(0.000000000000000001d);
        jsonWriter.WriteValue(0.000000000000000001m);
        jsonWriter.WriteValue(null);
        jsonWriter.WriteValue("This is a string.");
        jsonWriter.WriteNull();
        jsonWriter.WriteUndefined();
        jsonWriter.WriteEndArray();
      }

      const string expected = @"[""@"",""\r\n\t\f\b?{\\r\\n\""'"",true,10,10.99,0.99,1E-18,0.000000000000000001,,""This is a string."",null,undefined]";
      string result = sb.ToString();

      Console.WriteLine("ValueFormatting");
      Console.WriteLine(result);

      Assert.AreEqual(expected, result);
    }
Example #2
0
        public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
        {
            switch (_valueType)
            {
            case JTokenType.Comment:
                writer.WriteComment(_value.ToString());
                break;

            case JTokenType.Raw:
                writer.WriteRawValue((_value == null) ? null : _value.ToString());
                break;

            case JTokenType.Null:
                writer.WriteNull();
                break;

            case JTokenType.Undefined:
                writer.WriteUndefined();
                break;

            default:
            {
                JsonConverter matchingConverter;
                if (_value == null || (matchingConverter = JsonSerializer.GetMatchingConverter(converters, _value.GetType())) == null)
                {
                    switch (_valueType)
                    {
                    case JTokenType.Integer:
                        writer.WriteValue(Convert.ToInt64(_value, CultureInfo.InvariantCulture));
                        break;

                    case JTokenType.Float:
                        writer.WriteValue(Convert.ToDouble(_value, CultureInfo.InvariantCulture));
                        break;

                    case JTokenType.String:
                        writer.WriteValue((_value == null) ? null : _value.ToString());
                        break;

                    case JTokenType.Boolean:
                        writer.WriteValue(Convert.ToBoolean(_value, CultureInfo.InvariantCulture));
                        break;

                    case JTokenType.Date:
                        if (_value is DateTimeOffset)
                        {
                            writer.WriteValue((DateTimeOffset)_value);
                        }
                        else
                        {
                            writer.WriteValue(Convert.ToDateTime(_value, CultureInfo.InvariantCulture));
                        }
                        break;

                    case JTokenType.Bytes:
                        writer.WriteValue((byte[])_value);
                        break;

                    case JTokenType.Guid:
                    case JTokenType.Uri:
                    case JTokenType.TimeSpan:
                        writer.WriteValue((_value == null) ? null : _value.ToString());
                        break;

                    default:
                        throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", _valueType, "Unexpected token type.");
                    }
                }
                else
                {
                    matchingConverter.WriteJson(writer, _value, new JsonSerializer());
                }
                break;
            }
            }
        }
Example #3
0
        /// <summary>
        /// Writes this token to a <see cref="JsonWriter"/>.
        /// </summary>
        /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
        /// <param name="converters">A collection of <see cref="JsonConverter"/>s which will be used when writing the token.</param>
        public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
        {
            if (converters != null && converters.Length > 0 && _value != null)
            {
                JsonConverter matchingConverter = JsonSerializer.GetMatchingConverter(converters, _value.GetType());
                if (matchingConverter != null && matchingConverter.CanWrite)
                {
                    matchingConverter.WriteJson(writer, _value, JsonSerializer.CreateDefault());
                    return;
                }
            }

            switch (_valueType)
            {
            case JTokenType.Comment:
                writer.WriteComment(_value?.ToString());
                return;

            case JTokenType.Raw:
                writer.WriteRawValue(_value?.ToString());
                return;

            case JTokenType.Null:
                writer.WriteNull();
                return;

            case JTokenType.Undefined:
                writer.WriteUndefined();
                return;

            case JTokenType.Integer:
                if (_value is int)
                {
                    writer.WriteValue((int)_value);
                }
                else if (_value is long)
                {
                    writer.WriteValue((long)_value);
                }
                else if (_value is ulong)
                {
                    writer.WriteValue((ulong)_value);
                }
#if HAVE_BIG_INTEGER
                else if (_value is BigInteger)
                {
                    writer.WriteValue((BigInteger)_value);
                }
#endif
                else
                {
                    writer.WriteValue(Convert.ToInt64(_value, CultureInfo.InvariantCulture));
                }
                return;

            case JTokenType.Float:
                if (_value is decimal)
                {
                    writer.WriteValue((decimal)_value);
                }
                else if (_value is double)
                {
                    writer.WriteValue((double)_value);
                }
                else if (_value is float)
                {
                    writer.WriteValue((float)_value);
                }
                else
                {
                    writer.WriteValue(Convert.ToDouble(_value, CultureInfo.InvariantCulture));
                }
                return;

            case JTokenType.String:
                writer.WriteValue(_value?.ToString());
                return;

            case JTokenType.Boolean:
                writer.WriteValue(Convert.ToBoolean(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Date:
#if HAVE_DATE_TIME_OFFSET
                if (_value is DateTimeOffset)
                {
                    writer.WriteValue((DateTimeOffset)_value);
                }
                else
#endif
                {
                    writer.WriteValue(Convert.ToDateTime(_value, CultureInfo.InvariantCulture));
                }
                return;

            case JTokenType.Bytes:
                writer.WriteValue((byte[])_value);
                return;

            case JTokenType.Guid:
                writer.WriteValue((_value != null) ? (Guid?)_value : null);
                return;

            case JTokenType.TimeSpan:
                writer.WriteValue((_value != null) ? (TimeSpan?)_value : null);
                return;

            case JTokenType.Uri:
                writer.WriteValue((Uri)_value);
                return;
            }

            throw MiscellaneousUtils.CreateArgumentOutOfRangeException(nameof(Type), _valueType, "Unexpected token type.");
        }
Example #4
0
        public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
        {
            JTokenType valueType = this._valueType;

            switch (valueType)
            {
            case JTokenType.Null:
                writer.WriteNull();
                return;

            case JTokenType.Undefined:
                writer.WriteUndefined();
                return;

            default:
            {
                if (valueType == JTokenType.Comment)
                {
                    writer.WriteComment(this._value.ToString());
                    return;
                }
                JsonConverter matchingConverter;
                if (this._value != null && (matchingConverter = JsonSerializer.GetMatchingConverter(converters, this._value.GetType())) != null)
                {
                    matchingConverter.WriteJson(writer, this._value, new JsonSerializer());
                    return;
                }
                switch (this._valueType)
                {
                case JTokenType.Integer:
                    writer.WriteValue(Convert.ToInt64(this._value, CultureInfo.InvariantCulture));
                    return;

                case JTokenType.Float:
                    writer.WriteValue(Convert.ToDouble(this._value, CultureInfo.InvariantCulture));
                    return;

                case JTokenType.String:
                    writer.WriteValue((this._value == null) ? null : this._value.ToString());
                    return;

                case JTokenType.Boolean:
                    writer.WriteValue(Convert.ToBoolean(this._value, CultureInfo.InvariantCulture));
                    return;

                case JTokenType.Date:
                    if (this._value is DateTimeOffset)
                    {
                        writer.WriteValue((DateTimeOffset)this._value);
                    }
                    else
                    {
                        writer.WriteValue(Convert.ToDateTime(this._value, CultureInfo.InvariantCulture));
                    }
                    return;

                case JTokenType.Bytes:
                    writer.WriteValue((byte[])this._value);
                    return;

                case JTokenType.Guid:
                case JTokenType.Uri:
                case JTokenType.TimeSpan:
                    writer.WriteValue((this._value == null) ? null : this._value.ToString());
                    return;
                }
                throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", this._valueType, "Unexpected token type.");
            }

            case JTokenType.Raw:
                writer.WriteRawValue((this._value == null) ? null : this._value.ToString());
                return;
            }
        }
Example #5
0
        // Token: 0x0600141E RID: 5150 RVA: 0x0006A834 File Offset: 0x00068A34
        public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
        {
            if (converters != null && converters.Length != 0 && this._value != null)
            {
                JsonConverter matchingConverter = JsonSerializer.GetMatchingConverter(converters, this._value.GetType());
                if (matchingConverter != null && matchingConverter.CanWrite)
                {
                    matchingConverter.WriteJson(writer, this._value, JsonSerializer.CreateDefault());
                    return;
                }
            }
            switch (this._valueType)
            {
            case JTokenType.Comment:
            {
                object value = this._value;
                writer.WriteComment((value != null) ? value.ToString() : null);
                return;
            }

            case JTokenType.Integer:
            {
                object value2 = this._value;
                if (value2 is int)
                {
                    int value3 = (int)value2;
                    writer.WriteValue(value3);
                    return;
                }
                value2 = this._value;
                if (value2 is long)
                {
                    long value4 = (long)value2;
                    writer.WriteValue(value4);
                    return;
                }
                value2 = this._value;
                if (value2 is ulong)
                {
                    ulong value5 = (ulong)value2;
                    writer.WriteValue(value5);
                    return;
                }
                value2 = this._value;
                if (value2 is System.Numerics.BigInteger)
                {
                    System.Numerics.BigInteger bigInteger = (System.Numerics.BigInteger)value2;
                    writer.WriteValue(bigInteger);
                    return;
                }
                writer.WriteValue(Convert.ToInt64(this._value, CultureInfo.InvariantCulture));
                return;
            }

            case JTokenType.Float:
            {
                object value2 = this._value;
                if (value2 is decimal)
                {
                    decimal value6 = (decimal)value2;
                    writer.WriteValue(value6);
                    return;
                }
                value2 = this._value;
                if (value2 is double)
                {
                    double value7 = (double)value2;
                    writer.WriteValue(value7);
                    return;
                }
                value2 = this._value;
                if (value2 is float)
                {
                    float value8 = (float)value2;
                    writer.WriteValue(value8);
                    return;
                }
                writer.WriteValue(Convert.ToDouble(this._value, CultureInfo.InvariantCulture));
                return;
            }

            case JTokenType.String:
            {
                object value9 = this._value;
                writer.WriteValue((value9 != null) ? value9.ToString() : null);
                return;
            }

            case JTokenType.Boolean:
                writer.WriteValue(Convert.ToBoolean(this._value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Null:
                writer.WriteNull();
                return;

            case JTokenType.Undefined:
                writer.WriteUndefined();
                return;

            case JTokenType.Date:
            {
                object value2 = this._value;
                if (value2 is DateTimeOffset)
                {
                    DateTimeOffset value10 = (DateTimeOffset)value2;
                    writer.WriteValue(value10);
                    return;
                }
                writer.WriteValue(Convert.ToDateTime(this._value, CultureInfo.InvariantCulture));
                return;
            }

            case JTokenType.Raw:
            {
                object value11 = this._value;
                writer.WriteRawValue((value11 != null) ? value11.ToString() : null);
                return;
            }

            case JTokenType.Bytes:
                writer.WriteValue((byte[])this._value);
                return;

            case JTokenType.Guid:
                writer.WriteValue((this._value != null) ? ((Guid?)this._value) : null);
                return;

            case JTokenType.Uri:
                writer.WriteValue((Uri)this._value);
                return;

            case JTokenType.TimeSpan:
                writer.WriteValue((this._value != null) ? ((TimeSpan?)this._value) : null);
                return;

            default:
                throw MiscellaneousUtils.CreateArgumentOutOfRangeException("Type", this._valueType, "Unexpected token type.");
            }
        }
Example #6
0
 public override void WriteUndefined()
 {
     _textWriter.WriteUndefined();
     _innerWriter.WriteUndefined();
     base.WriteUndefined();
 }
        public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
        {
            string     str;
            string     str1;
            string     str2;
            JTokenType jTokenType = this._valueType;

            switch (jTokenType)
            {
            case JTokenType.Null:
            {
                writer.WriteNull();
                return;
            }

            case JTokenType.Undefined:
            {
                writer.WriteUndefined();
                return;
            }

            case JTokenType.Raw:
            {
                JsonWriter jsonWriter = writer;
                if (this._value == null)
                {
                    str2 = null;
                }
                else
                {
                    str2 = this._value.ToString();
                }
                jsonWriter.WriteRawValue(str2);
                return;
            }

            default:
            {
                if (jTokenType == JTokenType.Comment)
                {
                    break;
                }
                else
                {
                    goto Label0;
                }
            }
            }
            writer.WriteComment(this._value.ToString());
            return;

Label0:
            if (this._value != null)
            {
                JsonConverter matchingConverter = JsonSerializer.GetMatchingConverter(converters, this._value.GetType());
                JsonConverter jsonConverter     = matchingConverter;
                if (matchingConverter != null)
                {
                    jsonConverter.WriteJson(writer, this._value, new JsonSerializer());
                    return;
                }
            }
            switch (this._valueType)
            {
            case JTokenType.Integer:
            {
                writer.WriteValue(Convert.ToInt64(this._value, CultureInfo.InvariantCulture));
                return;
            }

            case JTokenType.Float:
            {
                writer.WriteValue(Convert.ToDouble(this._value, CultureInfo.InvariantCulture));
                return;
            }

            case JTokenType.String:
            {
                JsonWriter jsonWriter1 = writer;
                if (this._value == null)
                {
                    str = null;
                }
                else
                {
                    str = this._value.ToString();
                }
                jsonWriter1.WriteValue(str);
                return;
            }

            case JTokenType.Boolean:
            {
                writer.WriteValue(Convert.ToBoolean(this._value, CultureInfo.InvariantCulture));
                return;
            }

            case JTokenType.Null:
            case JTokenType.Undefined:
            case JTokenType.Raw:
            {
                throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", this._valueType, "Unexpected token type.");
            }

            case JTokenType.Date:
            {
                if (!(this._value is DateTimeOffset))
                {
                    writer.WriteValue(Convert.ToDateTime(this._value, CultureInfo.InvariantCulture));
                }
                else
                {
                    writer.WriteValue((DateTimeOffset)this._value);
                }
                return;
            }

            case JTokenType.Bytes:
            {
                writer.WriteValue((byte[])this._value);
                return;
            }

            case JTokenType.Guid:
            case JTokenType.Uri:
            case JTokenType.TimeSpan:
            {
                JsonWriter jsonWriter2 = writer;
                if (this._value == null)
                {
                    str1 = null;
                }
                else
                {
                    str1 = this._value.ToString();
                }
                jsonWriter2.WriteValue(str1);
                return;
            }

            default:
            {
                throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", this._valueType, "Unexpected token type.");
            }
            }
        }
 /// <inheritdoc />
 public override void WriteUndefined() => _writer.WriteUndefined();
Example #9
0
 public override void WriteTo(JsonWriter writer)
 {
     switch (_valueType)
       {
     case JsonTokenType.Comment:
       writer.WriteComment(_value.ToString());
       break;
     case JsonTokenType.Integer:
       writer.WriteValue(Convert.ToInt64(_value));
       break;
     case JsonTokenType.Float:
       writer.WriteValue(Convert.ToDouble(_value));
       break;
     case JsonTokenType.String:
       writer.WriteValue(_value.ToString());
       break;
     case JsonTokenType.Boolean:
       writer.WriteValue(Convert.ToBoolean(_value));
       break;
     case JsonTokenType.Null:
       writer.WriteNull();
       break;
     case JsonTokenType.Undefined:
       writer.WriteUndefined();
       break;
     case JsonTokenType.Date:
       writer.WriteValue(Convert.ToDateTime(_value));
       break;
     default:
       throw new ArgumentOutOfRangeException("TokenType", _valueType, "Unexpected token type.");
       }
 }
Example #10
0
        public override void WriteTo(JsonWriter writer, JsonConverterCollection converters)
        {
            switch (_valueType)
            {
            case JTokenType.Comment:
                writer.WriteComment(_value.ToString());
                return;

            case JTokenType.Raw:
                writer.WriteRawValue((_value != null) ? _value.ToString() : null);
                return;

            case JTokenType.Null:
                writer.WriteNull();
                return;

            case JTokenType.Undefined:
                writer.WriteUndefined();
                return;
            }

            if (_value != null)
            {
                Type typeToFind = _value.GetType();

                // If we are using the default converters we will try to avoid repeatedly check the same types as
                // GetMatchingConverter is a costly call with a very low probability to hit (less than 1% in real scenarios).
                JsonConverter matchingConverter = JsonConverterCache.GetMatchingConverter(converters, typeToFind);
                if (matchingConverter != null)
                {
                    matchingConverter.WriteJson(writer, _value, JsonExtensions.CreateDefaultJsonSerializer());
                    return;
                }
            }

            switch (_valueType)
            {
            case JTokenType.Integer:
                writer.WriteValue(Convert.ToInt64(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Float:
                if (_value is decimal)
                {
                    writer.WriteValue((decimal)_value);
                    return;
                }
                if (_value is float)
                {
                    writer.WriteValue((float)_value);
                    return;
                }
                writer.WriteValue(Convert.ToDouble(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.String:
                writer.WriteValue((_value != null) ? _value.ToString() : null);
                return;

            case JTokenType.Boolean:
                writer.WriteValue(Convert.ToBoolean(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Date:
#if !PocketPC && !NET20
                if (_value is DateTimeOffset)
                {
                    writer.WriteValue((DateTimeOffset)_value);
                }
                else
#endif
                writer.WriteValue(Convert.ToDateTime(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Bytes:
                writer.WriteValue((byte[])_value);
                return;

            case JTokenType.Guid:
            case JTokenType.Uri:
            case JTokenType.TimeSpan:
                writer.WriteValue((_value != null) ? _value.ToString() : null);
                return;
            }

            throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", _valueType, "Unexpected token type.");
        }
Example #11
0
        public void JsonReaderToJsonWriter(JsonReader reader, JsonWriter writer)
        {
            do
            {
                switch (reader.TokenType)
                {
                case JsonToken.None:
                    break;

                case JsonToken.StartObject:
                    writer.WriteStartObject();
                    break;

                case JsonToken.StartArray:
                    writer.WriteStartArray();
                    break;

                case JsonToken.PropertyName:
                    string propertyName = reader.Value.ToString();
                    writer.WritePropertyName(ConvertPropertyName(propertyName));
                    break;

                case JsonToken.Comment:
                    writer.WriteComment((reader.Value != null) ? reader.Value.ToString() : null);
                    break;

                case JsonToken.Integer:
                    writer.WriteValue(Convert.ToInt64(reader.Value, CultureInfo.InvariantCulture));
                    break;

                case JsonToken.Float:
                    object value = reader.Value;
                    if (value is decimal)
                    {
                        writer.WriteValue((decimal)value);
                    }
                    else if (value is double)
                    {
                        writer.WriteValue((double)value);
                    }
                    else if (value is float)
                    {
                        writer.WriteValue((float)value);
                    }
                    else
                    {
                        writer.WriteValue(Convert.ToDouble(value, CultureInfo.InvariantCulture));
                    }
                    break;

                case JsonToken.String:
                    writer.WriteValue(reader.Value.ToString());
                    break;

                case JsonToken.Boolean:
                    writer.WriteValue(Convert.ToBoolean(reader.Value, CultureInfo.InvariantCulture));
                    break;

                case JsonToken.Null:
                    if (this.PropertyNullValueReplaceValue != null)
                    {
                        writer.WriteValue(this.PropertyNullValueReplaceValue);
                    }
                    else
                    {
                        writer.WriteNull();
                    }
                    break;

                case JsonToken.Undefined:
                    writer.WriteUndefined();
                    break;

                case JsonToken.EndObject:
                    writer.WriteEndObject();
                    break;

                case JsonToken.EndArray:
                    writer.WriteEndArray();
                    break;

                case JsonToken.EndConstructor:
                    writer.WriteEndConstructor();
                    break;

                case JsonToken.Date:
                    if (reader.Value is DateTimeOffset)
                    {
                        writer.WriteValue(Convert.ToDateTime(reader.Value).ToString(DateTimeFormat));
                    }
                    else
                    {
                        writer.WriteValue(Convert.ToDateTime(reader.Value).ToString(DateTimeFormat));
                    }
                    break;

                case JsonToken.Raw:
                    writer.WriteRawValue((reader.Value != null) ? reader.Value.ToString() : null);
                    break;

                case JsonToken.Bytes:
                    if (reader.Value is Guid)
                    {
                        writer.WriteValue((Guid)reader.Value);
                    }
                    else
                    {
                        writer.WriteValue((byte[])reader.Value);
                    }
                    break;
                }
            } while (reader.Read());
        }
Example #12
0
        /// <summary>
        /// Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter" />.
        /// </summary>
        /// <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter" /> into which this method will write.</param>
        /// <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter" /> which will be used when writing the token.</param>
        public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
        {
            if (converters != null && converters.Length != 0 && this._value != null)
            {
                JsonConverter matchingConverter = JsonSerializer.GetMatchingConverter((IList <JsonConverter>)converters, this._value.GetType());
                if (matchingConverter != null && matchingConverter.CanWrite)
                {
                    matchingConverter.WriteJson(writer, this._value, JsonSerializer.CreateDefault());
                    return;
                }
            }
            switch (this._valueType)
            {
            case JTokenType.Comment:
                writer.WriteComment(this._value != null ? this._value.ToString() : (string)null);
                break;

            case JTokenType.Integer:
                if (this._value is int)
                {
                    writer.WriteValue((int)this._value);
                    break;
                }
                if (this._value is long)
                {
                    writer.WriteValue((long)this._value);
                    break;
                }
                if (this._value is ulong)
                {
                    writer.WriteValue((ulong)this._value);
                    break;
                }
                writer.WriteValue(Convert.ToInt64(this._value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case JTokenType.Float:
                if (this._value is Decimal)
                {
                    writer.WriteValue((Decimal)this._value);
                    break;
                }
                if (this._value is double)
                {
                    writer.WriteValue((double)this._value);
                    break;
                }
                if (this._value is float)
                {
                    writer.WriteValue((float)this._value);
                    break;
                }
                writer.WriteValue(Convert.ToDouble(this._value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case JTokenType.String:
                writer.WriteValue(this._value != null ? this._value.ToString() : (string)null);
                break;

            case JTokenType.Boolean:
                writer.WriteValue(Convert.ToBoolean(this._value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case JTokenType.Null:
                writer.WriteNull();
                break;

            case JTokenType.Undefined:
                writer.WriteUndefined();
                break;

            case JTokenType.Date:
                if (this._value is DateTimeOffset)
                {
                    writer.WriteValue((DateTimeOffset)this._value);
                    break;
                }
                writer.WriteValue(Convert.ToDateTime(this._value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case JTokenType.Raw:
                writer.WriteRawValue(this._value != null ? this._value.ToString() : (string)null);
                break;

            case JTokenType.Bytes:
                writer.WriteValue((byte[])this._value);
                break;

            case JTokenType.Guid:
                writer.WriteValue(this._value != null ? (Guid?)this._value : new Guid?());
                break;

            case JTokenType.Uri:
                writer.WriteValue((Uri)this._value);
                break;

            case JTokenType.TimeSpan:
                writer.WriteValue(this._value != null ? (TimeSpan?)this._value : new TimeSpan?());
                break;

            default:
                throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", (object)this._valueType, "Unexpected token type.");
            }
        }
Example #13
0
        public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
        {
            string   str;
            string   str1;
            string   str2;
            Guid?    nullable;
            TimeSpan?nullable1;

            if (converters != null && converters.Length != 0 && this._value != null)
            {
                JsonConverter matchingConverter = JsonSerializer.GetMatchingConverter(converters, this._value.GetType());
                if (matchingConverter != null && matchingConverter.CanWrite)
                {
                    matchingConverter.WriteJson(writer, this._value, JsonSerializer.CreateDefault());
                    return;
                }
            }
            switch (this._valueType)
            {
            case JTokenType.Comment:
            {
                JsonWriter jsonWriter = writer;
                if (this._value != null)
                {
                    str = this._value.ToString();
                }
                else
                {
                    str = null;
                }
                jsonWriter.WriteComment(str);
                return;
            }

            case JTokenType.Integer:
            {
                if (this._value is int)
                {
                    writer.WriteValue((int)this._value);
                    return;
                }
                if (this._value is long)
                {
                    writer.WriteValue((long)this._value);
                    return;
                }
                if (this._value is ulong)
                {
                    writer.WriteValue((ulong)this._value);
                    return;
                }
                writer.WriteValue(Convert.ToInt64(this._value, CultureInfo.InvariantCulture));
                return;
            }

            case JTokenType.Float:
            {
                if (this._value is decimal)
                {
                    writer.WriteValue((decimal)this._value);
                    return;
                }
                if (this._value is double)
                {
                    writer.WriteValue((double)this._value);
                    return;
                }
                if (this._value is float)
                {
                    writer.WriteValue((float)this._value);
                    return;
                }
                writer.WriteValue(Convert.ToDouble(this._value, CultureInfo.InvariantCulture));
                return;
            }

            case JTokenType.String:
            {
                JsonWriter jsonWriter1 = writer;
                if (this._value != null)
                {
                    str1 = this._value.ToString();
                }
                else
                {
                    str1 = null;
                }
                jsonWriter1.WriteValue(str1);
                return;
            }

            case JTokenType.Boolean:
            {
                writer.WriteValue(Convert.ToBoolean(this._value, CultureInfo.InvariantCulture));
                return;
            }

            case JTokenType.Null:
            {
                writer.WriteNull();
                return;
            }

            case JTokenType.Undefined:
            {
                writer.WriteUndefined();
                return;
            }

            case JTokenType.Date:
            {
                if (this._value is DateTimeOffset)
                {
                    writer.WriteValue((DateTimeOffset)this._value);
                    return;
                }
                writer.WriteValue(Convert.ToDateTime(this._value, CultureInfo.InvariantCulture));
                return;
            }

            case JTokenType.Raw:
            {
                JsonWriter jsonWriter2 = writer;
                if (this._value != null)
                {
                    str2 = this._value.ToString();
                }
                else
                {
                    str2 = null;
                }
                jsonWriter2.WriteRawValue(str2);
                return;
            }

            case JTokenType.Bytes:
            {
                writer.WriteValue((byte[])this._value);
                return;
            }

            case JTokenType.Guid:
            {
                JsonWriter jsonWriter3 = writer;
                if (this._value != null)
                {
                    nullable = (Guid?)this._value;
                }
                else
                {
                    nullable = null;
                }
                jsonWriter3.WriteValue(nullable);
                return;
            }

            case JTokenType.Uri:
            {
                writer.WriteValue((Uri)this._value);
                return;
            }

            case JTokenType.TimeSpan:
            {
                JsonWriter jsonWriter4 = writer;
                if (this._value != null)
                {
                    nullable1 = (TimeSpan?)this._value;
                }
                else
                {
                    nullable1 = null;
                }
                jsonWriter4.WriteValue(nullable1);
                return;
            }
            }
            throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", this._valueType, "Unexpected token type.");
        }
        public void JsonReaderToJsonWriter(JsonReader reader, JsonWriter writer)
        {
            do
            {
                //log.Info("reader.TokenType-->" + reader.TokenType);
                switch (reader.TokenType)
                {
                case JsonToken.None:
                    break;

                case JsonToken.StartObject:
                    writer.WriteStartObject();
                    break;

                case JsonToken.StartArray:
                    writer.WriteStartArray();
                    break;

                case JsonToken.PropertyName:
                    writer.WritePropertyName(reader.Value.ToString());
                    break;

                case JsonToken.Comment:
                    writer.WriteComment((reader.Value != null) ? reader.Value.ToString() : null);
                    break;

                //数字/字符/布尔型/GUID都转成string
                case JsonToken.Integer:
                case JsonToken.Float:
                case JsonToken.String:
                case JsonToken.Boolean:
                case JsonToken.Bytes:
                    writer.WriteValue(reader.Value.ToString());
                    break;

                case JsonToken.Null:
                    if (this.PropertyNullValueReplaceValue != null)
                    {
                        writer.WriteValue(this.PropertyNullValueReplaceValue);
                    }
                    else
                    {
                        writer.WriteNull();
                    }
                    break;

                case JsonToken.Undefined:
                    writer.WriteUndefined();
                    break;

                case JsonToken.EndObject:
                    writer.WriteEndObject();
                    break;

                case JsonToken.EndArray:
                    writer.WriteEndArray();
                    break;

                case JsonToken.EndConstructor:
                    writer.WriteEndConstructor();
                    break;

                case JsonToken.Date:
                    if (reader.Value != null)
                    {
                        writer.WriteValue(((DateTime)reader.Value).ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                    break;

                case JsonToken.Raw:
                    writer.WriteRawValue((reader.Value != null) ? reader.Value.ToString() : null);
                    break;
                }
            } while (reader.Read());
        }
Example #15
0
        /// <summary>
        /// Writes this token to a <see cref="JsonWriter"/>.
        /// </summary>
        /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
        /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
        public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
        {
            if (converters != null && converters.Length > 0 && _value != null)
            {
                JsonConverter matchingConverter = JsonSerializer.GetMatchingConverter(converters, _value.GetType());
                if (matchingConverter != null && matchingConverter.CanWrite)
                {
                    matchingConverter.WriteJson(writer, _value, JsonSerializer.CreateDefault());
                    return;
                }
            }

            switch (_valueType)
            {
            case JTokenType.Comment:
                writer.WriteComment((_value != null) ? _value.ToString() : null);
                return;

            case JTokenType.Raw:
                writer.WriteRawValue((_value != null) ? _value.ToString() : null);
                return;

            case JTokenType.Null:
                writer.WriteNull();
                return;

            case JTokenType.Undefined:
                writer.WriteUndefined();
                return;

            case JTokenType.Integer:
#if !(NET20 || NET35 || PORTABLE40 || PORTABLE)
                if (_value is BigInteger)
                {
                    writer.WriteValue((BigInteger)_value);
                }
                else
#endif
                writer.WriteValue(Convert.ToInt64(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Float:
                if (_value is decimal)
                {
                    writer.WriteValue((decimal)_value);
                }
                else if (_value is double)
                {
                    writer.WriteValue((double)_value);
                }
                else if (_value is float)
                {
                    writer.WriteValue((float)_value);
                }
                else
                {
                    writer.WriteValue(Convert.ToDouble(_value, CultureInfo.InvariantCulture));
                }
                return;

            case JTokenType.String:
                writer.WriteValue((_value != null) ? _value.ToString() : null);
                return;

            case JTokenType.Boolean:
                writer.WriteValue(Convert.ToBoolean(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Date:
#if !NET20
                if (_value is DateTimeOffset)
                {
                    writer.WriteValue((DateTimeOffset)_value);
                }
                else
#endif
                writer.WriteValue(Convert.ToDateTime(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Bytes:
                writer.WriteValue((byte[])_value);
                return;

            case JTokenType.Guid:
            case JTokenType.Uri:
            case JTokenType.TimeSpan:
                writer.WriteValue((_value != null) ? _value.ToString() : null);
                return;
            }

            throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", _valueType, "Unexpected token type.");
        }
 public void WriteUndefined()
 {
     writer.WriteUndefined();
 }
Example #17
0
        /// <summary>
        /// Writes this token to a <see cref="JsonWriter"/>.
        /// </summary>
        /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
        /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
        public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
        {
            switch (_valueType)
            {
            case JTokenType.Comment:
                writer.WriteComment(_value.ToString());
                return;

            case JTokenType.Raw:
                writer.WriteRawValue((_value != null) ? _value.ToString() : null);
                return;

            case JTokenType.Null:
                writer.WriteNull();
                return;

            case JTokenType.Undefined:
                writer.WriteUndefined();
                return;
            }

            JsonConverter matchingConverter;

            if (_value != null && ((matchingConverter = JsonSerializer.GetMatchingConverter(converters, _value.GetType())) != null))
            {
                matchingConverter.WriteJson(writer, _value, new JsonSerializer());
                return;
            }

            switch (_valueType)
            {
            case JTokenType.Integer:
                writer.WriteValue(Convert.ToInt64(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Float:
                writer.WriteValue(Convert.ToDouble(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.String:
                writer.WriteValue((_value != null) ? _value.ToString() : null);
                return;

            case JTokenType.Boolean:
                writer.WriteValue(Convert.ToBoolean(_value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Date:
#if !PocketPC && !NET20
                if (_value is DateTimeOffset)
                {
                    writer.WriteValue((DateTimeOffset)_value);
                }
                else
#endif
                writer.WriteValue(Convert.ToDateTime(_value, CultureInfo.InvariantCulture));;
                return;

            case JTokenType.Bytes:
                writer.WriteValue((byte[])_value);
                return;
            }

            throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", _valueType, "Unexpected token type.");
        }
Example #18
0
        public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
        {
            if (((converters != null) && (converters.Length != 0)) && (this._value != null))
            {
                JsonConverter matchingConverter = JsonSerializer.GetMatchingConverter(converters, this._value.GetType());
                if ((matchingConverter != null) && matchingConverter.CanWrite)
                {
                    matchingConverter.WriteJson(writer, this._value, JsonSerializer.CreateDefault());
                    return;
                }
            }
            switch (this._valueType)
            {
            case JTokenType.Comment:
                writer.WriteComment(this._value?.ToString());
                return;

            case JTokenType.Integer:
                switch (this._value)
                {
                case (int _):
                    break;

                case (long _):
                    writer.WriteValue((long)this._value);
                    return;

                    break;

                case (ulong _):
                    writer.WriteValue((ulong)this._value);
                    return;

                    break;

                case (BigInteger _):
                    writer.WriteValue((BigInteger)this._value);
                    return;

                    break;
                }
                writer.WriteValue((int)this._value);
                return;

            case JTokenType.Float:
                if (!(this._value is decimal))
                {
                    if (this._value is double)
                    {
                        writer.WriteValue((double)this._value);
                        return;
                    }
                    if (this._value is float)
                    {
                        writer.WriteValue((float)this._value);
                        return;
                    }
                    writer.WriteValue(Convert.ToDouble(this._value, CultureInfo.InvariantCulture));
                    return;
                }
                writer.WriteValue((decimal)this._value);
                return;

            case JTokenType.String:
                writer.WriteValue(this._value?.ToString());
                return;

            case JTokenType.Boolean:
                writer.WriteValue(Convert.ToBoolean(this._value, CultureInfo.InvariantCulture));
                return;

            case JTokenType.Null:
                writer.WriteNull();
                return;

            case JTokenType.Undefined:
                writer.WriteUndefined();
                return;

            case JTokenType.Date:
                if (!(this._value is DateTimeOffset))
                {
                    writer.WriteValue(Convert.ToDateTime(this._value, CultureInfo.InvariantCulture));
                    return;
                }
                writer.WriteValue((DateTimeOffset)this._value);
                return;

            case JTokenType.Raw:
                writer.WriteRawValue(this._value?.ToString());
                return;

            case JTokenType.Bytes:
                writer.WriteValue((byte[])this._value);
                return;

            case JTokenType.Guid:
                writer.WriteValue((this._value != null) ? ((Guid?)this._value) : null);
                return;

            case JTokenType.Uri:
                writer.WriteValue((Uri)this._value);
                return;

            case JTokenType.TimeSpan:
                writer.WriteValue((this._value != null) ? ((TimeSpan?)this._value) : null);
                return;
            }
            throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", this._valueType, "Unexpected token type.");
        }
Example #19
0
 /// <summary>
 /// Writes this token to a <see cref="JsonWriter"/>.
 /// </summary>
 /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
 /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
 public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
 {
     switch (_valueType)
       {
     case JsonTokenType.Comment:
       writer.WriteComment(_value.ToString());
       break;
     case JsonTokenType.Integer:
       WriteConvertableValue(writer, converters, v => writer.WriteValue(Convert.ToInt64(v, CultureInfo.InvariantCulture)), _value);
       break;
     case JsonTokenType.Float:
       WriteConvertableValue(writer, converters, v => writer.WriteValue(Convert.ToDouble(v, CultureInfo.InvariantCulture)), _value);
       break;
     case JsonTokenType.String:
       WriteConvertableValue(writer, converters, v => writer.WriteValue(v.ToString()), _value);
       break;
     case JsonTokenType.Boolean:
       WriteConvertableValue(writer, converters, v => writer.WriteValue(Convert.ToBoolean(v, CultureInfo.InvariantCulture)), _value);
       break;
     case JsonTokenType.Date:
       WriteConvertableValue(writer, converters, v =>
       {
     if (v is DateTimeOffset)
       writer.WriteValue((DateTimeOffset)v);
     else
       writer.WriteValue(Convert.ToDateTime(v, CultureInfo.InvariantCulture));
       }, _value);
       break;
     case JsonTokenType.Raw:
       writer.WriteRawValue(_value.ToString());
       break;
     case JsonTokenType.Null:
       writer.WriteNull();
       break;
     case JsonTokenType.Undefined:
       writer.WriteUndefined();
       break;
     default:
       throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", _valueType, "Unexpected token type.");
       }
 }
Example #20
0
 public override void WriteUndefined()
 {
     _innerWriter.WriteUndefined();
 }