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

标签 c# json json.net

我有一些像这样的 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

关于c# - 使用 JSON.net 获取 JToken 的名称/ key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002297/

相关文章:

c# - 在 C# Win Form 中嵌入 PowerPoint Viewer

c# - 什么时候需要依赖 dll?

arrays - 我想从 odata url 中提取 JSON 文件中存在的数据,但无法使用循环提取内容

json - 使用JSon.NET对动态数据反序列化JSON

c# - 无法将类型为 'Newtonsoft.Json.Linq.JObject' 的对象转换为类型 'System.Runtime.Serialization.ISafeSerializationData'

c# - 匿名 lambda ?

C# - 如果用户在插入记录后刷新页面,则会创建重复记录。我怎样才能防止这种情况发生?

javascript - 查看 json 并单击该 json 中的 links.json 并将其替换为当前的 json View

java - Java 套接字上的流式响应

javascript - 我如何在 JavaScript 中反转 JSON?