JSON.NET读取JObject时出错

dan*_*iel 5 asp.net ajax json json.net asp.net-web-api

我通过AJAX和Web Api将JSON对象发送到我的服务器:

var data = [
  ["fdsfsd", "Kifdsfa", "fsdfsa", "fadsf", "fasdfsd", "fadsf", "fasdfsd"],
  ["2008", "-5", "11", "12", "13"],
  ["2009", "20", "-11", "14", "13"],
  ["2010", "30", "15", "-12", "readOnly"]
];

$.ajax({
        url: '../webapi/Products',
        type: 'POST',
        dataType: "text", 
        data: "="+JSON.stringify( data ),
        success: function (test) {
                alert(test);
            },
            error: function (test) {
                alert("Error");
            }
Run Code Online (Sandbox Code Playgroud)

所以我在服务器上获得了我想用JSON.NET解析的值:

public void Post([FromBody]string value )
{
      JObject o = JObject.Parse(@value);
}
Run Code Online (Sandbox Code Playgroud)

这引发了异常:

Error reading JObject from JsonReader. Current JsonReader item is not an object:
StartArray. Path '', line 1, position 1.
Run Code Online (Sandbox Code Playgroud)

为什么?价值似乎对我来说是对的?

Has*_*kus 12

json.stringify将创建以下json字符串:

[
  ["fdsfsd", "Kifdsfa", "fsdfsa", "fadsf", "fasdfsd", "fadsf", "fasdfsd"],
  ["2008", "-5", "11", "12", "13"],
  ["2009", "20", "-11", "14", "13"],
  ["2010", "30", "15", "-12", "readOnly"]
]
Run Code Online (Sandbox Code Playgroud)

哪个是jsonArray而不是JsonObject.所以在服务器端你必须使用它来阅读它JArray a = JArray.Parse(@value);