json - 如何仅显示不是 jq 1.3 版数组或对象的顶级 JSON 条目?

标签 json jq

我有一个 JSON 结构,我只想打印简单类型的条目,例如不是数组或对象。

示例输入:

{
  "person": {
    "address": {
      "city": "NY",
      "street": "Wall Street"
    },
    "god": true,
    "nicks": [
      "Lar",
      "L",
      "Yo"
    ],
    "name": "Larry",
    "id": 1
  }
}

预期输出:

"god": true,
"name": "Larry",
"id": 1

我尝试了很多不同的变体,但都没有用:

jq '.person |与条目(.) |选择( map (类型)!=“数组”和 map (类型)!=“对象”)'

请注意,我使用的是 jq 1.3 版。

在此先感谢您的帮助。

最佳答案

您实际上并没有对那里的 with_entries 调用做任何事情。但你可能应该在那里过滤。过滤值类型既不是数组也不是对象的条目。

.person | with_entries(select(.value | type | . != "array" and . != "object"))

如果您使用的是较新版本的 jq,则可以使用 scalars 内置函数进行过滤,它可以有效地执行相同的操作。

.person | with_entries(select(.value | scalars))

关于json - 如何仅显示不是 jq 1.3 版数组或对象的顶级 JSON 条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400852/

相关文章:

arrays - 合并 JSON 数组

json - JQ:计算每组对象的数量,对于输入的一个子集

json - Unmarshal 中的动态类型

json - 无法使用 jq 将 JSON 输出转换为 CSV 格式

json - jq:根据对象值条件递归删除对象的最简单方法

php - 使用 PHP、Javascript 和 JSON 创建下拉过滤器

json - 无法在 Unix shell 中使用 JQ 遍历 JSON 响应对象

java - 无法将 JSON 反序列化为 POJO

java - JSON 对象的 REST Post 不处理 java 中日期值中的空格

java - 如何在 nanohttpd 中发送 JSON 数据作为响应