2014-01-06 44 views
0

我在.NET MVC5中反序列化数组时遇到了麻烦,任何帮助将不胜感激。Json反序列化不支持

JsonList psl = (new JavaScriptSerializer()).Deserialize<JsonList>(id); 

我的对象

[Serializable] 
public class JsonList 
{ 
    public object[] id { get; set; } 
    public List<children> children { get; set; } 
} 
[Serializable] 
public class children 
{ 
    public List<object> id { get; set; } 
} 

JSON数组

"[ 
    {\"id\":20,\"children\":[]},{\"id\":21,\"children\":[{\"id\":23}, 
     {\"id\":22}, {\"id\":24}, 
    {\"id\":26}]},{\"id\":27,\"children\":[{\"id\":56},{\"id\":57}, 
     {\"id\":51},{\"id\":50}, 
    {\"id\":55},{\"id\":52},{\"id\":65},{\"id\":53}]}, 
     {\"id\":28,\"children\":[{\"id\":29}, 
    {\"id\":30},{\"id\":32},{\"id\":79}]}, 
     {\"id\":33,\"children\":[{\"id\":34},{\"id\":35}, 
    {\"id\":39}]},{\"id\":40,\"children\":[{\"id\":41},{\"id\":42}, 
      {\"id\":43},{\"id\":44}, 
    {\"id\":75}]},{\"id\":45,\"children\":[{\"id\":47}, 
      {\"id\":82},{\"id\":49}]} 
]" 

jQuery的可排序

var UINestable=function(){ 
var updateOutput=function(e){ 
    var list = e.length ? e : $(e.target), output = list.data('output'); 
    var dataid = window.JSON.stringify(list.nestable('serialize')); 
    if (window.JSON) { 
     alert(dataid); 
     $.ajax(
      { 
       type: 'POST', 
       url: '/Admin/Menuler/MenuSiralama', 
       data: "{id:'" + dataid + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: 'json', 
       success: function(result) { 
       }, 
       error: function() { 
       } 
      } 
     ); 
    }  
    else{console.log('JSON browser support required for this demo.');} 
}; 
return{init:function(){ 
     $('#nestable_list_1').nestable({group:2}) 
       .on('change',updateOutput);}}; 
}(); 
+0

你使用json.net库吗? – clement

回答

0

试试这个:

[Serializable] 
public class JsonList 
{ 
    public object[] id { get; set; } 
    public children children { get; set; } 
} 

根据您尝试POST的JSON数据示例,您不需要将儿童属性视为列表。

任何一个children属性都应该是children类的类型(您将其声明为children类的列表),或者支持在您的JSON结构中收集children类。