我有一个从curl返回的JSON数组,如下所示:
[
{
"title": "Some Title",
"tags":"tagA tag-B tagC"
},
{
"title": "Some Title 2",
"tags":"tagA tagC"
},
...
]
我想将其转换为...
[
{
"title": "Some Title",
"tags":["tagA",
"tag-B",
"tagC"]
},
{
"title": "Some Title 2",
"tags":["tagA",
"tagC"]
},
...
]
到目前为止,我有:
(map(select(.tags!=null)) | map(.tags | split(" "))) as $tags | $tags
这似乎给了我类似的东西:
[
[
"tagA",
"tag-B",
"tagC"
],
[
"tagA",
"tagC"
]
]
但是我似乎无法将其织回到输出中,该输出将使我.tags
成为具有原始值的原始对象中的数组...
您使它变得比实际复杂得多。只需使用map()
和|=
:
jq 'map(.tags |= split(" "))' file.json
编辑:
如果要处理的条目不包含tags
:
jq 'map(try(.tags |= split(" ")))' file.json
另外,如果您希望不更改以下内容,则所有条目均保持不变tags
:
jq 'map(try(.tags |= split(" ")) // .)' file.json
结果:
[
{
"tags": [
"tagA",
"tag-B",
"tagC"
],
"title": "Some Title"
},
{
"tags": [
"tagA",
"tagC"
],
"title": "Some Title 2"
}
]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句