获取 JSON 中的密钥

Posted

技术标签:

【中文标题】获取 JSON 中的密钥【英文标题】:Get keys in JSON 【发布时间】:2018-03-10 08:05:39 【问题描述】:

我从外部系统得到以下 JSON 结果:


  "key1": "val1",
  "key2": "val2",
  "key3": "val3"

现在我想使用 JSONPath 显示所有键和所有值。所以我正在寻找一些东西来获得key1、key2和key3。另外我想使用一个属性的索引,例如。 G。 $....[2].key 获取“key3”等。 有没有办法做这样的事情?

【问题讨论】:

你看过 Object.keys( ) 吗? 我只需要 JSONPath 表达式(您可以在 jsonpath.com 对其进行测试)就可以在我的系统中使用它。不幸的是,我无法使用 javascript 或任何其他代码。我只是可以将 JSONPath 表达式作为参数传递... 【参考方案1】:

我发现 tilda ~ 符号能够检索它所调用的值的键。因此,对于您的示例,这样的查询:

$.*~

返回这个:

[
  "key1",
  "key2",
  "key3"
]

另一个例子,如果我们有一个这样的 JSON 文档:

  
  "key1": "val1",
  "key2": "val2",
  "key3": 
      "key31":"val31",
      "key32":"val32"
  

这样的查询:

$.key3.*~

会返回这个:

[
  "key31",
  "key32"
]

请务必注意,这些示例适用于 JSONPath.com 和其他一些模拟器/在线工具,但有些则不能。这可能是因为我在JSONPath plus 文档中发现了 tilda(~) 运算符,而不是官方文档。

【讨论】:

以上是关于获取 JSON 中的密钥的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 iPhone 中的密钥从 JSON 中获取数据

仅当特定密钥对值与可迭代匹配时,才在 JSON 对象中获取多个 JSON 密钥对值

颤振获取密钥 - Json

为啥json.keys()以不同的顺序获取密钥[重复]

如何使用 SwiftyJSON 从 JSON 对象中获取 JSON 密钥?

如何从 json 对象中获取密钥