通过使用JSON.NET [C#]在JSON数组中的循环对象



描述:

我有一个字符串 str 喜欢下面:

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

我知道我可以将其列为

的JSON
JsonConvert.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);
    }
}

相关内容

  • 没有找到相关文章

最新更新