title: Custom JSON converter not being called after posting data from ajax to controller
body: <p>I have implemented this custom json converter to convert types depending on the data received, but it seems like it's never being called. Is the action doing the native parsing and my converter is not being used?</p>
  
  <p>My results are posted into this action</p>
  
  <pre><code>[HttpPost]
  public JsonResult saveCustomfields(CustomFields customfields)
  {
  
  }
  </code></pre>
  
  <p>Model</p>
  
  <pre><code>public class Field
  {
      public string _label { get; set; }
      public string _name { get; set; }
      public string _type { get; set; }
      public List&lt;Option&gt; option { get; set; }
  }
  
  public class Fields
  {
      [JsonProperty("field")]
      [JsonConverter(typeof(SingleOrArrayConverter&lt;Field&gt;))]
      public List&lt;Field&gt; field { get; set; }
  }
  
  public class Formtemplate
  {
      [JsonProperty("fields")]
      public Fields fields { get; set; }
  }
  
  public class CustomFields
  {
      [JsonProperty("formtemplate")]
      public Formtemplate formtemplate { get; set; }
  }
  </code></pre>
  
  <p>Custom converter</p>
  
  <pre><code>public class SingleOrArrayConverter&lt;T&gt; : JsonConverter
  {
      public override bool CanConvert(Type objectType)
      {
          return (objectType == typeof(List&lt;T&gt;));
      }
  
      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
      {
          JToken token = JToken.Load(reader);
          if (token.Type == JTokenType.Array)
          {
              return token.ToObject&lt;List&lt;T&gt;&gt;();
          }
          return new List&lt;T&gt; { token.ToObject&lt;T&gt;() };
      }
  
      public override bool CanWrite
      {
          get { return false; }
      }
  
      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
      {
          throw new NotImplementedException();
      }
  }
  </code></pre>
  
  <p>Ajax </p>
  
  <pre><code>&lt;script&gt;
      jQuery(document).ready(function ($) {
          var fbTemplate = document.getElementById('fb-template');
          var formBuilder = $(fbTemplate).formBuilder();
  
          $(".form-builder-save").click(function (e) {
              e.preventDefault();
              var x2js = new X2JS();
              var xml = formBuilder.data('formBuilder').formData;
              var json = x2js.xml_str2json(xml);
  
              alert(JSON.stringify(json));
  
              $.ajax({
                  url: "saveCustomfields",
                  type: "POST",
                  data: JSON.stringify(json),
                  contentType: "application/json; charset=utf-8",
                  dataType: "json",
              });
          });
      });
  &lt;/script&gt;
  </code></pre>