internal static JsonSerializationException Create(JsonReader reader, string message)
 {
   return Create(reader, message, null);
 }
 internal static JsonSerializationException Create(JsonReader reader, string message, Exception ex)
 {
   return Create(reader as IJsonLineInfo, reader.Path, message, ex);
 }
Example #3
0
 /// <summary>
 /// Reads the JSON representation of the object.
 /// </summary>
 /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
 /// <param name="objectType">Type of the object.</param>
 /// <param name="existingValue">The existing value of object being read.</param>
 /// <param name="serializer">The calling serializer.</param>
 /// <returns>The object value.</returns>
 public abstract object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer);
Example #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="JsonValidatingReader"/> class that
 /// validates the content returned from the given <see cref="JsonReader"/>.
 /// </summary>
 /// <param name="reader">The <see cref="JsonReader"/> to read from while validating.</param>
 public JsonValidatingReader(JsonReader reader)
 {
   ValidationUtils.ArgumentNotNull(reader, "reader");
   _reader = reader;
   _stack = new Stack<SchemaScope>();
 }
Example #5
0
    private void WriteConstructorDate(JsonReader reader)
    {
      if (!reader.Read())
        throw JsonWriterException.Create(this, "Unexpected end when reading date constructor.", null);
      if (reader.TokenType != JsonToken.Integer)
        throw JsonWriterException.Create(this, "Unexpected token when reading date constructor. Expected Integer, got " + reader.TokenType, null);

      long ticks = (long)reader.Value;
      DateTime date = DateTimeUtils.ConvertJavaScriptTicksToDateTime(ticks);

      if (!reader.Read())
        throw JsonWriterException.Create(this, "Unexpected end when reading date constructor.", null);
      if (reader.TokenType != JsonToken.EndConstructor)
        throw JsonWriterException.Create(this, "Unexpected token when reading date constructor. Expected EndConstructor, got " + reader.TokenType, null);

      WriteValue(date);
    }
Example #6
0
    internal void WriteToken(JsonReader reader, int initialDepth, bool writeChildren, bool writeDateConstructorAsDate)
    {
      do
      {
        switch (reader.TokenType)
        {
          case JsonToken.None:
            // read to next
            break;
          case JsonToken.StartObject:
            WriteStartObject();
            break;
          case JsonToken.StartArray:
            WriteStartArray();
            break;
          case JsonToken.StartConstructor:
            string constructorName = reader.Value.ToString();
            // write a JValue date when the constructor is for a date
            if (writeDateConstructorAsDate && string.Equals(constructorName, "Date", StringComparison.Ordinal))
              WriteConstructorDate(reader);
            else
              WriteStartConstructor(reader.Value.ToString());
            break;
          case JsonToken.PropertyName:
            WritePropertyName(reader.Value.ToString());
            break;
          case JsonToken.Comment:
            WriteComment((reader.Value != null) ? reader.Value.ToString() : null);
            break;
          case JsonToken.Integer:
#if !(NET20 || NET35 || SILVERLIGHT || PORTABLE || PORTABLE40)
            if (reader.Value is BigInteger)
            {
              WriteValue((BigInteger)reader.Value);
            }
            else
#endif
            {
              WriteValue(Convert.ToInt64(reader.Value, CultureInfo.InvariantCulture));
            }
            break;
          case JsonToken.Float:
            object value = reader.Value;

            if (value is decimal)
              WriteValue((decimal)value);
            else if (value is double)
              WriteValue((double)value);
            else if (value is float)
              WriteValue((float)value);
            else
              WriteValue(Convert.ToDouble(value, CultureInfo.InvariantCulture));
            break;
          case JsonToken.String:
            WriteValue(reader.Value.ToString());
            break;
          case JsonToken.Boolean:
            WriteValue(Convert.ToBoolean(reader.Value, CultureInfo.InvariantCulture));
            break;
          case JsonToken.Null:
            WriteNull();
            break;
          case JsonToken.Undefined:
            WriteUndefined();
            break;
          case JsonToken.EndObject:
            WriteEndObject();
            break;
          case JsonToken.EndArray:
            WriteEndArray();
            break;
          case JsonToken.EndConstructor:
            WriteEndConstructor();
            break;
          case JsonToken.Date:
#if !NET20
            if (reader.Value is DateTimeOffset)
              WriteValue((DateTimeOffset)reader.Value);
            else
#endif
              WriteValue(Convert.ToDateTime(reader.Value, CultureInfo.InvariantCulture));
            break;
          case JsonToken.Raw:
            WriteRawValue((reader.Value != null) ? reader.Value.ToString() : null);
            break;
          case JsonToken.Bytes:
            WriteValue((byte[])reader.Value);
            break;
          default:
            throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", reader.TokenType, "Unexpected token type.");
        }
      }
      while (
        // stop if we have reached the end of the token being read
        initialDepth - 1 < reader.Depth - (IsEndToken(reader.TokenType) ? 1 : 0)
        && writeChildren
        && reader.Read());
    }
Example #7
0
    internal void WriteToken(JsonReader reader, bool writeChildren, bool writeDateConstructorAsDate)
    {
      int initialDepth;

      if (reader.TokenType == JsonToken.None)
        initialDepth = -1;
      else if (!IsStartToken(reader.TokenType))
        initialDepth = reader.Depth + 1;
      else
        initialDepth = reader.Depth;

      WriteToken(reader, initialDepth, writeChildren, writeDateConstructorAsDate);
    }
Example #8
0
    /// <summary>
    /// Writes the current <see cref="JsonReader"/> token.
    /// </summary>
    /// <param name="reader">The <see cref="JsonReader"/> to read the token from.</param>
    /// <param name="writeChildren">A flag indicating whether the current token's children should be written.</param>
    public void WriteToken(JsonReader reader, bool writeChildren)
    {
      ValidationUtils.ArgumentNotNull(reader, "reader");

      WriteToken(reader, writeChildren, true);
    }
Example #9
0
 /// <summary>
 /// Writes the current <see cref="JsonReader"/> token and its children.
 /// </summary>
 /// <param name="reader">The <see cref="JsonReader"/> to read the token from.</param>
 public void WriteToken(JsonReader reader)
 {
   WriteToken(reader, true, true);
 }