【问题标题】:Using jq to show 2nd array for all elements in the first array使用 jq 显示第一个数组中所有元素的第二个数组
【发布时间】:2019-09-09 17:08:43
【问题描述】:

我正在尝试使用 jq 获取 2 个数组,并为第一个数组中的每个元素显示整个第二个数组。输入 json 看起来像:

{
  "data": [
    {
      "countries": ["GB", "JE"],
      "currencies": ["GBP", "EUR"]
    }
  ]
}

输出的 json 应该是这样的:

{
  "GB": ["GBP", "EUR"],
  "JE": ["GBP", "EUR"]
}

感谢您的帮助。

【问题讨论】:

  • 供您考虑,在您的问题中,有一个用于 JSON 操作的 alternative 解决方案,基于 unix walk-path 实用程序 jtc:<input.json jtc -w'<countries>l[:]<C>v[-2][currencies]' -T'{"{C}": {{}} }' -jjll。如果您有兴趣,请告诉我 - 我可以在单独的答案中详细说明工具的使用。 (PS。我是该工具的开发者)。

标签: arrays json jq


【解决方案1】:

为每个国家生成对象,最后合并它们。

.data[] | [
  { (.countries[]): .currencies }
] | add

或将这种替代方法与reduce 一起使用:

.data[] | reduce { (.countries[]): .currencies } as $f ({}; . + $f)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-16
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多