Jquery MVC JavaScriptSerializer反序列化json
我有以下jquery-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
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);