关于解析列表中字典的JQ问题

问题描述 投票:0回答:1

我有一个以下格式的json文件

{
  "a": [
    [
      {
        "p": "p1-value",
        "d": "d1-value"
      },
      {
        "p": "p2-value",
        "d": "d2-value"
      }
    ],
    [
      {
        "p": "p3-value",
        "d": "d3-value"
      }
    ]
  ],
  "z": [
    [
      {
        "p": "p1-value",
        "d": "d1-value"
      }
    ]
  ]
}

我想知道如何输出这样的东西

a p1-value
a p2-value
a p3-value
z p1-value

我尝试了一些不同的 jq 查询,但我无法让它工作。

我知道我可以在顶层使用“keys[]”,但这并没有给我任何低于它的东西。我已经尝试过

."a" | .[] | .[] | .path
但这意味着我必须指定每个顶级密钥..

谢谢

jq
1个回答
2
投票

可以使用

to_entries
创建键值对数组,您可以使用
.key
.value
来访问该数组:

to_entries[] | "\(.key) \(.value[][].p)"

演示

或者使用

keys_unsorted
仅获取键,使用
as
将它们绑定到变量,并使用变量访问字段:

keys_unsorted[] as $key | "\($key) \(.[$key][][].p)"

演示

在这两种情况下,我都使用字符串插值

"\(…)"
来构造最终值,但根据您的处理管道,可能有更好的方法。

© www.soinside.com 2019 - 2024. All rights reserved.