使用jq将嵌套的JSON展开

3

我正在尝试使用jq来展平一些嵌套的JSON。我首先尝试了在bash中循环遍历JSON,使用base64 参照这篇文章。结果执行速度非常慢,因此我正在尝试找到只使用jq的替代方案。

我的JSON如下:

[
  {
    "id":117739,
    "officers": "[{\"name\":\"Alice\"},{\"name\":\"Bob\"}]"
  },
  {
    "id":117740,
    "officers":"[{\"name\":\"Charlie\"}]"
  }
]

officers字段保存的是一个JSON格式的字符串。我想要将其简化为:

[
  { "id":117739, "name":"Alice" },
  { "id":117739, "name":"Bob" },
  { "id":117740, "name":"Charlie" }
]

1
顺便提一下,关于那篇文章,请注意在bash中使用base64实现迭代是从来不必要的,因为紧凑的JSON本身就提供了必要的编码。例如,使用“IFS= read -r”就可以解决问题。 - peak
1个回答

2

你试图压平的数据本身就是JSON,因此你需要使用fromjson进行解析。解析后,你可以生成新的对象。

map({id} + (.officers | fromjson[]))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接