Пример #1
0
        private IEnumerable<object> PopulateList(JsonReader reader/*, Type objectType*/)
        {
            while (reader.Read()) {
                switch (reader.TokenType) {
                case JsonToken.EndArray:
                    yield break;
                case JsonToken.Comment:
                    break;
                default:
                    yield return GetObject (reader/*, elementType*/);

                    break;
                }
            }

            throw new JsonSerializationException ("Unexpected end when deserializing array.");
        }
Пример #2
0
        private IEnumerator<KeyValuePair<string, object>> PopulateObject(JsonReader reader/*, Type objectType*/)
        {
            reader.IncrementRecursionLevel ();
            while (reader.Read ()) {
                switch (reader.TokenType) {
                case JsonToken.PropertyName:
                    string memberName = reader.Value.ToString ();

                    if (!reader.Read ())
                        throw new JsonSerializationException (string.Format ("Unexpected end when setting {0}'s value.", memberName));
                    yield return new KeyValuePair<string, object> (memberName, GetObject (reader));
                    break;
                case JsonToken.EndObject:
                    reader.DecrementRecursionLevel ();
                    yield break;
                default:
                    throw new JsonSerializationException ("Unexpected token when deserializing object: " + reader.TokenType);
                }
            }

            throw new JsonSerializationException ("Unexpected end when deserializing object.");
        }
Пример #3
0
        /// <summary>
        /// Deserializes the Json structure contained by the specified <see cref="JsonReader"/>
        /// into an instance of the specified type.
        /// </summary>
        /// <param name="reader">The type of object to create.</param>
        /// <param name="objectType">The <see cref="Type"/> of object being deserialized.</param>
        /// <returns>The instance of <paramref name="objectType"/> being deserialized.</returns>
        object Deserialize(JsonReader reader)
        {
            if (!reader.Read ())
                return null;

            return GetObject (reader);
        }