5

JSONオブジェクトをAJAXおよびWebApi経由でサーバーに送信しています。

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.

なんで?値は私には正しいようですか?

4

2 に答える 2

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

于 2012-12-11T15:40:38.130 に答える
0

これを一瞥するだけで、変更することをお勧めします

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

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

... jQueryは、シリアル化するオブジェクトまたは有効なクエリ文字列のいずれかを想定しているため、投稿された変数をリッスンします。名前と値のペアの値として割り当てずに、大量のデータをPOSTすることはできないと思います。

于 2012-12-11T15:42:31.193 に答える