2014-03-13 88 views
1

我得到了一些JSON:反序列化JSON到列表

{ 
    "data": { 
    "1001": { 
     "name": "Test name 1" 
    }, 
    "1004": { 
     "name": "Test name 2" 
    }, 
    "1005": { 
     "name": "Test name 3" 
    } 
    } 
} 

如何反序列化到這一點,一旦反序列化,將包含100110041005列表?

我迄今爲止代碼:

public class Data 
{ 
    public string name { get; set; } 
} 
public class Object 
{ 
    public Data data { get; set; } 
} 

...

List<string> list = new List<string>(); 
var data = JsonConvert.DeserializeObject<Object>(json); 

foreach (var s in data) 
    list.Add(s); 

然而,這是行不通的。

+0

「不起作用」是什麼意思? – Sayse

+0

請不要爲您自己的安全創建一個名爲「對象」的類 – Jonesopolis

+0

請執行以下任何相關答案嗎? ---------> 似乎相當相關的東西 –

回答

2

嘗試根據JSON結構中的類模型:

public class Data 
{ 
    public Dictionary<string, Node> data { get; set; } 
} 

public class Node 
{ 
    public string name { get; set; } 
} 

var result = JsonConvert.DeserializeObject<Data>(json); 

然後你就可以在項目迭代:

foreach(var item in result.data) 
{ 
    //do stuff 
} 
0

您的模型與您的JSON不匹配。你的JSON表示有一個名爲'data'的對象,它有三個名爲'1001','1004'和'1005'的屬性,每個屬性都有一個名爲'name'的屬性。你的c#模型應該是這樣的:

public class Data 
{ 
    public Child 1001 { get; set; } 
    public Child 1004 { get; set; } 
    public Child 1005 { get; set; } 
} 
public class Child 
{ 
    public string name{ get; set; } 
} 

你可能想考慮使用動態對象。

1

你不能直接將其轉換爲一個列表。問題是1001,1004和1005是你的對象的鍵。一個列表不會包含數字,而是其中的名字。這意味着你會丟失一些數據。

你可以做的是使用字典,然後遍歷這些。

類數據應該包含另一個類型的字典,我們稱它爲Name(so)。名稱將有一個成員,字符串名稱。