title: json deserialization returns null
body: <p>I pass JSON object with ajax formdata to Controller. I try to deserialize it to object, but it always returns null. I only can convert it to dynamic, but then cannot convert dynamic to Category class. </p>
  
  <pre><code>public class CategoryVM
  {
      public Category category { get; set; }
      public CategoryImage categoryImage { get; set; }
  
      public CategoryVM()
      {
          category = new Category(); 
          categoryImage = new CategoryImage(); 
      }
  }
  </code></pre>
  
  <p>Category class</p>
  
  <pre><code>public class Category
  {
      public string Kategori { get; set; }
      public string Kodu { get; set; }
      public bool State { get; set; }
  }
  </code></pre>
  
  <p>JSON value:</p>
  
  <pre><code>{
      "cat": {
          "Category": {
              "Kategori": "xxx",
              "Kodu": "yyy",
              "State": "true"
          }
      }
  }
  </code></pre>
  
  <p>Controller:</p>
  
  <pre><code>[HttpPost]
  public ActionResult AddCat(string cat)
  {
       dynamic json = Newtonsoft.Json.JsonConvert.DeserializeObject(cat);
       CategoryVM c = JsonConvert.DeserializeObject&lt;CategoryVM &gt;(JsonConvert.SerializeObject(json)); //converts null here
       return View();
  }
  </code></pre>
  
  <p>I also tried JsonConvert, but not working for me:</p>
  
  <pre><code>CategoryVM c = JsonConvert.DeserializeObject&lt;CategoryVM&gt;(JsonConvert.SerializeObject(json));
  </code></pre>