描述:
我有一个字符串 str 喜欢下面:
[
{
"key1": "value1",
"key2": "value2"
},
{
"key1": "value3",
"key2": "value4"
}
]
我知道我可以将其列为
的JSONJsonConvert.DeserializeObject<CustomType>(str).
现在,我需要循环这些对象并获取值。我应该怎么做?
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 有关完整代码示例。
编辑
如果您每个对象有多个属性,则循环应该看起来像这样。
foreach(JObject item in array)
{
foreach(var prop in item.Children<JProperty>())
{
Console.WriteLine(prop.Name + ": " + prop.Value);
}
//Console.WriteLine(item.Children<JProperty>().FirstOrDefault().Name + ": " + item.Children<JProperty>().FirstOrDefault().Value);
}
您可以将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);
}
}