2017-04-25 63 views
2

語言C#。控制檯程序。將Json文檔反序列化爲C#對象

我有以下格式的JSON文檔:

{"Cars":{"Mercedes": 1,"BMW": 3,"Toyota": 0},"Bikes":{"Kawasaki": 5,"Pulsar": 4}} 

我有以下類別:

public class Vehicles 
    { 
    public Cars cars {get; set;} 
    public Bikes bikes {get; set;} 
    } 

    public class Cars 
    { 
     Dictionary<string, int> carcount {get; set;} 
    } 

    public class Bikes 
    { 
     Dictionary<string, int> bikecount {get; set;} 
    } 

我的JSON反序列化到類。 我想這

Vehicles jsondata = JsonConvert.DesrializeObject<Vehicles>(jsonstring); 

我得到的字典兩個自行車和汽車爲空。我知道我錯過了一些非常基本的東西。但無法弄清楚究竟是什麼。
此外,json字符串格式不能更改。類結構可以改變。

回答

2

你沒有一個叫carcountbikecount水平。相反,你立即有字典。

public class Vehicles 
{ 
    public Dictionary<string, int> Cars {get; set;} 
    public Dictionary<string, int> Bikes {get; set;} 
} 

請注意,屬性名稱區分大小寫,因此在混合套管時要非常小心。

(你很可能已經通過以下步驟所述in this answer這樣做更容易一些。遺憾的是不帶字典進去。這將至少給你在這裏起點字典應該是。)

+0

@約翰和你的,都是相同的答案,兩者都是正確的。我選擇約翰的答案只是因爲他早日回答。 – Ansh43

+0

如果另一個只是轉儲一些代碼,很難發佈任何更快的代碼。 –

+0

我確實認爲這個問題在兩者比較時是不言自明的。另外,我確實加快了答案,因爲我覺得它比我好。 – john

2

你需要這樣的:

public class Vehicles 
{ 
    public Dictionary<string, int> Cars { get; set; } 
    public Dictionary<string, int> Bikes { get; set; } 
}