public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var tableCollection = new ConfigTableCollection(); while (reader.Read()) { switch (reader.TokenType) { case JsonToken.EndObject: return(tableCollection); case JsonToken.PropertyName: var tableName = (string)reader.Value; reader.Read(); var table = serializer.Deserialize <ConfigTable>(reader); table.name = tableName; tableCollection.Add(table); break; } } return(tableCollection); }