Jquery MVC JavaScriptSerializer反序列化json

Jquery MVC JavaScriptSerializer反序列化json,jquery,asp.net-mvc,json,deserialization,Jquery,Asp.net Mvc,Json,Deserialization,我有以下jquery- var items = new Array(); items.push({ "Item1":$("myvalue").val(), "Item2":$("myvalue2").val() }); .... data: { 'items': JSON.stringify(items) }, .... 使用以下反序列化代码- var js = new JavaScriptSeri

我有以下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);
这是返回给我的控制器的json字符串

[{\"Item1\":\"1|2|3|5\",\"Item2\":\"1\"}]
这是行不通的。当我运行这段代码时,结果是一个空对象。 但是,如果我对json字符串进行替换并删除[and],它将被反序列化为正确的数据

我是否处理得不正确?我希望在不修改json字符串的情况下反序列化到我的对象

任何想法都很好。谢谢。

JSON.stringify(items)
将序列化为一个数组,因为
items
是一个数组。您可能想要的是:

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

....

{
    'items': JSON.stringify(jsonModel)
}
我在这里真正做的一切都没有使用
数组

唯一需要注意的是,如果您确实希望将这些对象的数组发送回控制器。如果是这种情况,那么反序列化代码需要如下所示

js.Deserialize<IEnumerable<JsonModel>>(items);
js.反序列化(项);

当然,您需要像以前一样发送一个序列化数组。

谢谢-我知道这一定是我忽略了的简单内容。
js.Deserialize<IEnumerable<JsonModel>>(items);