title: Invalid JSON primitive: object
body: <p>I am trying to send a stringified <code>JSON</code> object to MVC method via the following jQuery Ajax call:</p>
  
  <pre><code>$.ajax({
             type: "POST",
             url: "UpdateItem",
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             processData : false,
             data:
                 {
                      item: JSON.stringify(_item)
                 },
             success: function (data) {
                 alert(data);
             },
             error: function (x, t, m, b) {
                 DisplayErrorMessage(x.responseText);
             }
         });
  </code></pre>
  
  <p>and the stringified version of my data is as follows:</p>
  
  <pre><code>{
      "Id": 4,
      "ParentId": 1,
      "TypeId": 2,
      "TypeText": "Solid",
      "ItemNo": 8,
      "StandartTypeId": 7,
      "StandartTypeText": "Dept",
      "GradeTypeId": 6,
      "GradeTypeText": null,
      "Thickness": 0.044,
      "ThicknessToleranceId": 1,
      "ThicknessToleranceText": null,
      "Width": 42,
      "MinWeightId": 6,
      "MinWeight": null,
      "MinWeight2": null,
      "MaxWeightId": 8,
      "MaxWeight1": null,
      "MaxWeight2": null,
      "DefId": null,
      "Quantity": 330690,
      "QuantityToleranceId": 3,
      "QuantityToleranceText": "",
      "ProductionDate": "2014-11-05T22:00:00.000Z",
      "PortId": 3,
      "PortText": null,
      "DeliveryDate": "2014-10-08T21:00:00.000Z",
      "MaterialTypeId": 2,
      "MaterialTypeText": "",
      "FeePrepaid": 30,
      "Price": 525,
      "Extra1": 0,
      "Extra1": 0,
      "CurrencyId": 2,
      "CurrencyText": "",
      "StatusId": 2,
      "StatusText": "",
      "ReasonId": null,
      "ReasonText": null,
      "Note": "New note",
      "CreateDate": "2014-11-06T09:12:29.661Z",
      "CreateUserId": 0,
      "CreateUserText": "",
      "CancelDate": null,
      "CancelUserId": null,
      "CancelUserText": null,
      "ChemicalProperties": null,
      "TechnicalProperties": null,
      "Remarks": null
  }
  </code></pre>
  
  <p>I have successfully validated my JSON object via <a href="http://jsonlint.com/" rel="nofollow">http://jsonlint.com/</a>.</p>
  
  <p>I try to get the response into the following method :</p>
  
  <pre><code>public JsonResult UpdateItem(string json)
  {
      var js = new JavaScriptSerializer();
      var deserializedItem = (object[])js.DeserializeObject(json);
  
  
      return Json(null);
  }
  </code></pre>
  
  <p>But when I try to post via Ajax I get the following error Message before ASP.NET MVC Controller method call:</p>
  
  <blockquote>
    <p>Invalid JSON primitive: object.
    <strong>Exception Details:</strong> System.ArgumentException: Invalid JSON primitive: object.</p>
  </blockquote>
  
  <p>And my Stack Trace is as follows:</p>
  
  <pre><code>[ArgumentException: Invalid JSON primitive: object.]
  System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() +915
  System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth) +597
  System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeList(Int32 depth) +354
  System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth) +531
  System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer) +108
  System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit) +210
  System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input) +86
  System.Web.Mvc.JsonValueProviderFactory.GetDeserializedObject(ControllerContext controllerContext) +191
  System.Web.Mvc.JsonValueProviderFactory.GetValueProvider(ControllerContext controllerContext) +19
  System.Web.Mvc.&lt;&gt;c__DisplayClassc.&lt;GetValueProvider&gt;b__7(ValueProviderFactory factory) +34
  System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +145
  System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +171
  System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +460
  System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
  System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider(ControllerContext controllerContext) +281
  System.Web.Mvc.ControllerBase.get_ValueProvider() +40
  System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +60
  System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +117
  System.Web.Mvc.Async.&lt;&gt;c__DisplayClass25.&lt;BeginInvokeAction&gt;b__1e(AsyncCallback asyncCallback, Object asyncState) +446
  System.Web.Mvc.Async.WrappedAsyncResult`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +130
  System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +302
  System.Web.Mvc.&lt;&gt;c__DisplayClass1d.&lt;BeginExecuteCore&gt;b__17(AsyncCallback asyncCallback, Object asyncState) +30
  System.Web.Mvc.Async.WrappedAsyncResult`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +130
  System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state) +382
  System.Web.Mvc.Async.WrappedAsyncResult`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +130
  System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +317
  System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +15
  System.Web.Mvc.&lt;&gt;c__DisplayClass8.&lt;BeginProcessRequest&gt;b__2(AsyncCallback asyncCallback, Object asyncState) +71
  System.Web.Mvc.Async.WrappedAsyncResult`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +130
  System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +249
  System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +50
  System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +301
  System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously) +155
  </code></pre>