2013-10-21 61 views
0

我正在研究ASP.NET MVC 4.0应用程序。如何在MVC中将json数组解析为控制器?

我送我的窗体的值设置为控制器这样的剑道窗口刷新选项: -

var frm = $("#formUpdate"); 

var productWindow = $("#ProductWindow").data("kendoWindow"); 
productWindow .refresh({    
     url: "../../Product/UpdateProduct", 
     data: { model: JSON.stringify(frm.serializeArray())} 
}); 

而下面是我在控制器获取字符串: -

[{"name":"DefaultAddressNumber","value":""},{"name":"Id2","value":"tax id 1"}, {"name":"Id2","value":"tax id 2"},{"name":"Id","value":"5"},{"name":"ProductTaxes","value":""},{"name":"ProdcutId","value":"20"},{"name":"InsuranceId","value":""},{"name":"OrgAddr1","value":""},{"name":"OrgAddr2","value":""},{"name":"OrgAddr3","value":""},{"name":"Name","value":"Amit Kumar"},{"name":"Description","value":"Description"},{"name":"SelectedProductSubTypeId","value":""},{"name":"IsEmailFinalizedProduct","value":"False"}] 

而且我想要再次将该字符串反序列化为数组或对象的形式,或者可以轻松读取/获取它的内容。

为此,我有以下代码中使用: -

var productString = Newtonsoft.Json.JsonConvert.DeserializeObject<ProductViewModel>(str); 

但我同时我用这提示以下错误:

无法反序列化当前的JSON阵列(例如,[1 ,2,3])转换为 'ProductRepository.ViewModel.ProductViewModel'类型,因为类型 需要JSON对象(例如{“name”:“value”})才能正确反序列化 。

为了解决这个错误或者改变JSON来JSON对象(例如 {“名称”:“值”})或改变反序列化类型到一个数组或一个实现的集合接口 类型(例如ICollection的, IList) 就像可以从JSON数组反序列化的List。 也可以将JsonArrayAttribute添加到该类型,以强制它从一个JSON数组中反序列化 。

路径“”,1号线,位置1

任何一个可以帮助我在这,意味着我如何解析这个字符串?

+0

尝试'变种productString = Newtonsoft.Json.JsonConvert.DeserializeObject >(STR);' – shakib

回答

0

JSON.stringify使用向外侧像..

var frm = $("#formUpdate"); 

var productWindow = $("#ProductWindow").data("kendoWindow"); 
productWindow .refresh({    
     url: "../../Product/UpdateProduct", 
     data: JSON.stringify({ model: frm.serializeArray()}) 
});