2016-11-30 38 views
1

說明在一個JSON對象數組:

我有一個字符串STR象下面這樣:環路通過使用Json.net [C#]

[ 
    { 
    "key1": "value1", 
    "key2": "value2" 
    }, 
    { 
    "key1": "value3", 
    "key2": "value4" 
    } 
] 

我知道我可以反序列化到JSON像

JsonConvert.DeserializeObject<CustomType>(str). 

現在我有一個循環這些對象並獲取值的要求。我應該怎麼做?

+1

你的JSON字符串是一個列表。你不能像這樣反序列化它。你的'CustomType'類是什麼樣的? – HebeleHododo

+0

只需使用foreach(CustomTypeList中的var項){// here get item} –

+0

實際上,我不想創建一個新的類來映射json鍵。我只想循環數組以獲取每個對象中的鍵和值。 – Garry

回答

2
JArray array = JsonConvert.DeserializeObject<JArray>(json); 

foreach(JObject item in array) 
{ 
    var a = item.Children<JProperty>().FirstOrDefault().Name; 
    var b = item.Children<JProperty>().FirstOrDefault().Value; 

} 

這裏,如果你在數組的每個元素只有一個屬性。如果你有多個屬性,你需要循環所有的孩子。

查看dotNetFiddle查看完整的代碼示例。

編輯

如果每個對象不止一個屬性你的循環應該是這樣的。

+0

它應該有更多的屬性,什麼類型的item.children ()? JEnumerable ?對不起,我是C#的新手。更新問題。 – Garry

+0

@Garry檢查編輯。 – mybirthname

+1

是的,作品完美。謝謝你的時間! – Garry

1

你可以反序列化JSON字符串到List<Dictionary<string, string>>

List<Dictionary<string, string>> list = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(str); 

然後循環該列表

List<string> values = new List<string>(); 
foreach(Dictionary<string, string> dict in list) 
{ 
    foreach(KeyValuePair<string, string> kvPair in dict) 
    { 
     values.Add(kvPair.Value); 
    } 
} 
+1

感謝您的時間回答,這兩個解決方案都看起來不錯。 – Garry