我有一些JSON,其中包含我要收集的每件事的嵌套数组。
我在这里蒸馏过:
[
[
{
"Item":"FIRST",
"items":[
{
"firstitem1":"Item 1",
"firstitem2":"Item 2"
}
]
}
],
[
{
"Item":"SECOND",
"items":[
{
"seconditem1":"Second Item 1",
"seconditem2":"Second Item 2"
}
]
}
]
]
所需的输出如下:
{
"FirstItem1": "Item 1",
"SecondItem1": "Second Item 1"
}
我可以使用分别退回每个物品
.[0] | {FirstItem1: .[0].items[0].firstitem1}
.[1] | {seconditem: .[0].items[0].seconditem1}
我发现了类似的问题,该问题说明您可以使用filter +(filter)之类的东西来连接过滤器: Multiple filters using JQ
但是,虽然我上面的两个过滤器都是独立工作的,但是当我以这种方式将它们串联时:
.[0] | {FirstItem1: .[0].items[0].firstitem1} + (.[1] | {seconditem: .[0].items[0].seconditem1})
我的第二个回答是“ null”。
{
"FirstItem1": "Item 1",
"seconditem": null
}
几天来,我一直在挠头,有什么想法吗?如果我应采取不同的进攻方式,我将不胜感激。
这是一个jqplay链接 https://jqplay.org/s/By94hv9gKj
答案 0 :(得分:1)
我已经为此抓了几天
当您看到距离有多近时,您可能会想拔些头发。基本上,您只需要再加上一对括号即可:
(.[0] | {FirstItem1: .[0].items[0].firstitem1}) +
(.[1] | {seconditem: .[0].items[0].seconditem1})
除了您可能第二个键名的意思是“ SecondItem1”。
这是一个不太重复的解决方案,可能值得考虑:
[.[][] | .items[0]]
| {FirstItem1: first(.[0][]), SecondItem1: first(.[1][])}