2013-08-05 166 views
0

这段代码有什么问题?JSON解析C#

JSON

cities: [ 
{ 
    city: { 
     id: 1, 
     name: "A.S.Peta", 
     status: "Active" 
    } 
},.............. 

C#代码

public class Cities 
{ 
    public City[] cities;  
} 

public class City 
{ 
    public int id; //{ get; set; } 
    public string name; //{ get; set; } 
    public string status; //{ get; set; } 
} 

//De-Serialization 
var jsSerialize = new JavaScriptSerializer(); 
var cities = jsSerialize.Deserialize<Cities>(result); 

不填充内部对象城市。但显示收集所有记录。任何想法?

+3

你可以做一件事。准备JSON对象之前。您可以通过在服务器端序列化并保留调试器来检查虚拟JSON。 –

+0

反序列化之前,你是否尝试序列化,看看你使用的JSON字符串是否与它生成的字符串相同,我认为还有额外{}进入...不确定 –

+0

只需尝试var jsSerialize = new JavaScriptSerializer(); var cities = jsSerialize.Serialize(new Cities());并将调试器保留在下一条语句 –

回答

8

你的json对象中的“内部”city正在数组中添加一个嵌套对象。

试试这个JSON代码:

{ 
    "cities": [ 
    { 
     "id": 1, 
     "name": "A.S.Peta", 
     "status": "Active" 
    }, 
    { 
     "id": 2, 
     "name": "Strasbourg", 
     "status": "Active" 
    } 
    ] 
} 

如果你要坚持你的originial JSON结构,你可以试试这个C#代码:

public class City2 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public string status { get; set; } 
} 

public class City 
{ 
    public City2 city { get; set; } 
} 

public class RootObject 
{ 
    public List<City> cities { get; set; } 
} 

该代码已经被这个非常自动生成有用的网络工具:json2C#

+0

_无效的JSON原语:cities._ –

+0

@RoyiNamir:你应该将整个jscon包装成一对括号。我更新我的代码以反映这一点。 –

+1

y .....作品。+ 1。 http://i.stack.imgur.com/rLtkp.png –