title: Custom deserializer only for some fields with json.NET
body: <p>I'm trying to deserialize some JSON:</p>
  
  <pre><code>{ 
     "a":1,
     "b":25,
     "c":"1-7",
     "obj1":{ 
        "a1":10,
        "b1":45,
        "c1":60
     },
     "obj2":[ 
        { 
           "a2":100,
           "b2":15,
           "c2":50
        },
        { 
           "e2":"1,2,5-7",
           "f2":"1,3-5",
           "a2":25
        }
     ]
  }
  </code></pre>
  
  <p>I want to find a way to define a custom de-serialization only for some fields.</p>
  
  <p>In the following code, I separated the fields that need some attention (custom processing) and the ones that could be done automatically somehow.</p>
  
  <p>Is it possible to automatically deserialize the "normal" fields? (that don't need any specific custom processing)</p>
  
  <pre><code>[JsonConverter(typeof(ConfigurationSerializer))]
      public class Configuration
      {
          public int a { get; set; }
          public int b { get; set; }
          public Obj1 obj1 { get; set; }
  
          public int[] c { get; set; }
          public IList&lt;Obj2&gt; obj2 { get; set; }
      }
  
      public class ConfigurationSerializer : JsonConverter
      {
          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)
          {
              JObject jsonObject = JObject.Load(reader);
  
              Configuration configuration = new Configuration();
  
              // I would like this part to be automatic as I just repeat the default
              // In the real case, I have many fields here!
              configuration.a = (int)jsonObject["a"];
              configuration.b = (int)jsonObject["b"];
              configuration.obj1 = jsonObject["obj1"].ToObject&lt;Obj1&gt;();
  
              // I created the JsonConverter for those 2 properties
              configuration.c = myCustomProcessMethod(jsonObject["c"]);
              configuration.obj2 = myCustomProcessMethod2(jsonObject["obj2"].ToObject&lt;ValletConfiguration&gt;());
  
              return configuration;
          }
  
          public override bool CanConvert(Type objectType)
          {
              return typeof(Configuration).IsAssignableFrom(objectType);
          }
      }
  </code></pre>