c# - 使用 JSON.net 获取 JToken 的名称/ key

我有一些像这样的 JSON

[
  {
    "MobileSiteContent": {
      "Culture": "en_au",
      "Key": [
        "NameOfKey1"
      ]
    }
  },
  {
    "PageContent": {
      "Culture": "en_au",
      "Page": [
        "about-us/"
      ]
    }
  }
]

我将其解析为 JArray:

var array = JArray.Parse(json);

然后,我循环遍历数组:

foreach (var content in array)
{

}

content 是一个 JToken

如何检索每个项目的“名称”或“ key ”?

例如,“MobileSiteContent”或“PageContent”

最佳答案

JTokenJObject 的基类, JArray , JProperty , JValue等。您可以使用 Children<T>()获取特定类型的 JToken 子代的过滤列表的方法,例如 JObject .每个JObject收藏了 JProperty对象,可通过 Properties() 访问方法。对于每个 JProperty , 你可以得到它的Name . (当然你也可以得到 Value 如果需要,它是另一个 JToken。)

综合起来我们有:

JArray array = JArray.Parse(json);

foreach (JObject content in array.Children<JObject>())
{
    foreach (JProperty prop in content.Properties())
    {
        Console.WriteLine(prop.Name);
    }
}

输出:

MobileSiteContent
PageContent

https://stackoverflow.com/questions/21002297/

相关文章:

json - 如何不使用 Go 将空结构编码为 JSON?

asp.net - 如何接收 JSON 作为 MVC 5 操作方法参数

ruby-on-rails - Ruby on Rails - 为多个模型渲染 JSON

json - 有 JSON 的流 API 吗?

java - gson 抛出 MalformedJsonException

python - 在 Ajax 调用之后使用 Django 模板呈现 JSON 对象

python - 将 Python namedtuple 序列化为 json

javascript - 连接两个 JSON 对象

javascript - AJAX跨域调用

arrays - 通过 JSON 将对象数组发布到 ASP.Net MVC3