【发布时间】:2018-07-03 18:27:30
【问题描述】:
这里填充了数组 subThings
$ echo '[{"thing-1" : "meta1","thing-2" : "meta2","thing-n" : "metan","subThings":[{"subThing-1" : "subMeta1","subThing-2" : "subMeta2","subThing-n" : "subMetan"}]}]' | jq '.'
[
{
"subThings": [
{
"subThing-n": "subMetan",
"subThing-2": "subMeta2",
"subThing-1": "subMeta1"
}
],
"thing-n": "metan",
"thing-2": "meta2",
"thing-1": "meta1"
}
]
您可以在此处看到缺少的键被设置为 null。
$ echo '[{"thing-1" : "meta1","thing-2" : "meta2","thing-n" : "metan","subThings":[{"subThing-1" : "subMeta1","subThing-2" : "subMeta2","subThing-n" : "subMetan"}]}]' |
jq '[.[] | {"thing-1","thing-5","subThing-2":.subThings[]["subThing-2"],}]'
[
{
"subThing-2": "subMeta2",
"thing-5": null,
"thing-1": "meta1"
}
]
这里的数组 subThings 是空的
$ echo '[{"thing-1" : "meta1","thing-2" : "meta2","thing-n" : "metan","subThings":[]}]' | jq '.'
[
{
"subThings": [],
"thing-n": "metan",
"thing-2": "meta2",
"thing-1": "meta1"
}
]
而不是 subThing-2 的空值,它会清除所有数据。
$ echo '[{"thing-1" : "meta1","thing-2" : "meta2","thing-n" : "metan","subThings":[]}]' |
jq '[.[] | {"thing-1","thing-5","subThing-2":.subThings[]["subThing-2"],}]'
[]
$
为什么?
有没有其他方法可以在没有空数组清除所有内容的情况下获取数据?
【问题讨论】:
-
1.请遵循minimal reproducible example 准则。目前尚不清楚问题中的“this”是什么。 2.
.subThings[]["subThing-2"]显然不是你的意思。也许你的意思是.subThings["subThing-2"]