将字符串字段拆分为jq中的数组?

leeand00

我有一个从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成为具有原始值的原始对象中的数组...

佐藤桂(SatōKatsura)

您使它变得比实际复杂得多。只需使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章