1

私は次のjqueryを持っています-

var items = new Array();
   items.push({
    "Item1":$("myvalue").val(),
    "Item2":$("myvalue2").val()
});

    ....

    data: {
           'items':  JSON.stringify(items) 
          },
    ....

次の逆シリアル化コードを使用して-

var js = new JavaScriptSerializer();
var myobj = js.Deserialize<JsonModel>(items);

次のオブジェクトへ-

public class JsonModel
{
    public string Item1 { get; set; }
    public string Item2 { get; set; }
}

これが私のコントローラーに返されるjson文字列です

[{\"Item1\":\"1|2|3|5\",\"Item2\":\"1\"}]

これは機能していません。このコードを実行すると、オブジェクトが空になります。ただし、json文字列を置き換えて[と]を削除すると、正しいデータで逆シリアル化されます。

私はこれを間違って処理していますか?json文字列を変更せずにオブジェクトに逆シリアル化したいです。

どんな考えでも素晴らしいでしょう。ありがとう。

4

1 に答える 1

3

JSON.stringify(items)は配列であるため、配列にシリアル化されitemsます。あなたがおそらく行きたいのは行くことです:

var jsonModel = {
  "Item1":$("myvalue").val(),      
  "Item2":$("myvalue2").val()      
};

....

{
    'items': JSON.stringify(jsonModel)
}

私がここで実際に行ったことはすべて、itemsアレイを使用していません。

唯一の注意点は、実際にこれらのオブジェクトの配列をコントローラーに送り返したい場合です。その場合、逆シリアル化コードは次のようになります。

js.Deserialize<IEnumerable<JsonModel>>(items);

もちろん、以前と同じようにシリアル化されたアレイを送り返す必要があります。

于 2012-10-10T00:28:32.453 に答える