JSON.NET Error reading JObject

只谈情不闲聊 提交于 2019-12-10 14:29:30

问题


I am sending a JSON object via AJAX and Web Api to my Server:

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");
            }

so i am getting on server the value which i want to parse with JSON.NET:

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

This throws the exception:

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

Why? The value seems to be right to me?


回答1:


json.stringify will create the following json string:

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

Which is a jsonArray and not a JsonObject. So on server side you'll have to read it using JArray a = JArray.Parse(@value);




回答2:


Just glancing over this, I'd suggest changing

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

to

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

...since jQuery expects either an object to serialize, or a valid query string, and then listening for that posted variable. I don't think you can just POST a bunch of data without assigning it as the value of a name/value pair.



来源:https://stackoverflow.com/questions/13823109/json-net-error-reading-jobject

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!