2013-08-05 117 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 –