我通过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.
为什么呢?价值似乎对我好吗?
答案 0 :(得分: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"]
]
哪个是jsonArray而不是JsonObject。因此,在服务器端,您必须使用JArray a = JArray.Parse(@value);
答案 1 :(得分:0)
只是看了一遍,我建议改变
data: "="+JSON.stringify( data ),
到
data: "myJSON="+JSON.stringify( data ),
...因为jQuery需要一个对象来序列化,或者一个有效的查询字符串,然后再监听那个发布的变量。我不认为你可以只发布一堆数据而不将其指定为名称/值对的值。