title: Apply a converter to all elements in Json Array
body: <p>One can use custom converters by defining a class like this:</p>
  
  <pre><code>public class MyCustomConverter : JsonConverter
  {
  
      public override bool CanConvert(Type objectType)
      {
          return objectType == typeof(MyCustomType);
      }
  
      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
      {
          throw new NotImplementedException();
      }
  
      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
      {
          var ret = new MyCustomType();
          return ret;
      }
  }
  </code></pre>
  
  <p>And then using it like this:</p>
  
  <pre><code>MyCustomType item = JsonConvert.DeserializeObject&lt;MyCustomType&gt;(jsonString, new MyCustomTypeConverter());
  </code></pre>
  
  <p>My question is, how can I apply this deserializer when dealing with a list of <code>MyCustomType</code>? Basically I have a Json array (<code>[{ ... }, { ... }]</code>) and I would like to use the converter above on each item of the array to get a <code>List&lt;MyCustomType&gt;</code>.</p>
  
  <p>I know I can do it by hand using the <code>JArray</code> object and its methods but I was wondering if there was an easier and cleaner way to do it.</p>
  
  <hr>
  
  <p>Here's a simplified context.</p>
  
  <p>C# (I want to deserialize a <code>List</code> of those):</p>
  
  <pre><code>class MyCustomType
  {
      public Dictionary&lt;string, string&gt; Data
      {
          get;
          set;
      }
      public int Id
      {
          get;
          set;
      }
  }
  </code></pre>
  
  <p>JSON (one item in the array sample):</p>
  
  <pre><code>{
      "Id": 50,
      "Data": [
          "Hello",
          "World"
      ]
  }
  </code></pre>
  
  <p>C# Deserialization I want to apply:</p>
  
  <pre><code>public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
  {
      var ret = new MyCustomType();
      ret.Data = new Dictionary&lt;string, string&gt;();
      while (reader.Read())
      {
          if (reader.TokenType == JsonToken.EndObject)
          {
              continue;
          }
  
          var value = reader.Value.ToString();
          switch(value)
          {
              case "Id":
                  ret.Id = reader.ReadAsInt32().Value;
                  break;
              case "Data":
                  ret.Data.Add(MySingleton.Instance.CurrentLanguage, reader.ReadAsString());
                  break;
          }
      }
      return ret;
  }
  </code></pre>