我想转此:
{
"a": 1,
"b": [1,2,3,4]
}
进入这个
[
{"a": 1, "b": 1},
{"a": 1, "b": 2},
...
]
这有点像python的zip
,但形状不均匀。
谢谢!
答案 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[]}
要将流转换为数组,只需将表达式包装在方括号中:[...]