JSON.NET 读取 JObject 时出错



我正在通过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");
            }

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

public void Post([FromBody]string value )
{
      JObject o = JObject.Parse(@value);
}

这将引发异常:

Error reading JObject from JsonReader. Current JsonReader item is not an object:
StartArray. Path '', line 1, position 1.

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

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"]
]

这是一个jsonArray,而不是一个JsonObject。因此,在服务器端,您必须使用JArray a = JArray.Parse(@value);读取它

只是看了一眼这个,我建议改变

data: "="+JSON.stringify( data ),

data: "myJSON="+JSON.stringify( data ),

。因为 jQuery 需要序列化的对象或有效的查询字符串,然后侦听该发布的变量。我认为您不能只发布一堆数据而不将其分配为名称/值对的值。

相关内容

  • 没有找到相关文章

最新更新