public virtual object Import(ImportContext context, JsonReader reader) { if (context == null) { throw new ArgumentNullException("context"); } if (reader == null) { throw new ArgumentNullException("reader"); } if (!reader.MoveToContent()) { throw new JsonException("Unexpected EOF."); } if (reader.TokenClass == JsonTokenClass.Null) { return this.ImportNull(context, reader); } if (reader.TokenClass == JsonTokenClass.String) { return this.ImportFromString(context, reader); } if (reader.TokenClass == JsonTokenClass.Number) { return this.ImportFromNumber(context, reader); } if (reader.TokenClass == JsonTokenClass.Boolean) { return this.ImportFromBoolean(context, reader); } if (reader.TokenClass == JsonTokenClass.Array) { return this.ImportFromArray(context, reader); } if (reader.TokenClass != JsonTokenClass.Object) { throw new JsonException(string.Format("{0} not expected.", reader.TokenClass)); } return this.ImportFromObject(context, reader); }
public virtual void WriteFromReader(JsonReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } if (reader.MoveToContent()) { if (reader.TokenClass == JsonTokenClass.String) { this.WriteString(reader.Text); } else if (reader.TokenClass == JsonTokenClass.Number) { this.WriteNumber(reader.Text); } else if (reader.TokenClass == JsonTokenClass.Boolean) { this.WriteBoolean(reader.Text == "true"); } else if (reader.TokenClass == JsonTokenClass.Null) { this.WriteNull(); } else if (reader.TokenClass == JsonTokenClass.Array) { this.WriteStartArray(); reader.Read(); while (reader.TokenClass != JsonTokenClass.EndArray) { this.WriteFromReader(reader); } this.WriteEndArray(); } else { if (reader.TokenClass != JsonTokenClass.Object) { throw new JsonException(string.Format("{0} not expected.", reader.TokenClass)); } reader.Read(); this.WriteStartObject(); while (reader.TokenClass != JsonTokenClass.EndObject) { this.WriteMember(reader.ReadMember()); this.WriteFromReader(reader); } this.WriteEndObject(); } reader.Read(); } }