使用JQ在最内层对象中分配父键

时间:2017-09-21 07:25:44

标签: json jq

我想转此:

{
    "a": 1,
    "b": [1,2,3,4]
}

进入这个

[
{"a": 1, "b": 1},
{"a": 1, "b": 2},
...
]

这有点像python的zip,但形状不均匀。

谢谢!

3 个答案:

答案 0 :(得分:2)

这是一个解决方案:

$ jq -Mc '[.b=.b[]]' data.json

如果data.json包含样本数据,则输出为

[{"a":1,"b":1},{"a":1,"b":2},{"a":1,"b":3},{"a":1,"b":4}]

答案 1 :(得分:1)

您可以使用cat ab.json|jq '[{"a": .a, "b": .b[]}]'来获得答案。

答案 2 :(得分:1)

如果最小化击键是目标,那么请考虑:

jq '.+{b:.b[]}' <<< "$j"
{
  "a": 1,
  "b": 1
}
{
  "a": 1,
  "b": 2
}
{
  "a": 1,
  "b": 3
}
{
  "a": 1,
  "b": 4
}

在此使用.可确保除&#34; b&#34;以外的所有键。将被保留。相比之下,如果一个人想要忽略除了&#34; a&#34;之外的所有键。和&#34; b&#34;,然后可以使用jq过滤器:

 {a,b:.b[]}

要将流转换为数组,只需将表达式包装在方括号中:[...]