arrays - 使用 jq 将两个 JSON 数组合并到一个文件中

我有一个包含两个数组的 JSON 文件。我想将这些数组组合成一个对象数组,每个对象都包含来自每个原始数组的一个元素。

JSON 输入如下所示:

{
  "en": [
    "E1",
    "E2",
    "E3",
    "E4"
  ],
  "fr": [
    "F1",
    "F2",
    "F3",
    "F4"
  ]
}

期望的输出:

[
  { "en":"E1", "fr":"F1"},
  { "en":"E2", "fr":"F2"},
  { "en":"E3", "fr":"F3"},
  { "en":"E4", "fr":"F4"}
]

无论我尝试什么,我都无法驯服 jq 来提供它。我最接近的是使用过滤器 。 | {en:.en[],fr:.fr[]} 它给出了数组的所有可能配对,如下所示:

{
  "en": "E1",
  "fr": "F1"
}
{
  "en": "E1",
  "fr": "F2"
}
{
  "en": "E1",
  "fr": "F3"
}
{
  "en": "E1",
  "fr": "F4"
}
{
  "en": "E2",
  "fr": "F1"
}
{
  "en": "E2",
  "fr": "F2"
}
{
  "en": "E2",
  "fr": "F3"
}
{
  "en": "E2",
  "fr": "F4"
}
{
  "en": "E3",
  "fr": "F1"
}
{
  "en": "E3",
  "fr": "F2"
}
{
  "en": "E3",
  "fr": "F3"
}
{
  "en": "E3",
  "fr": "F4"
}
{
  "en": "E4",
  "fr": "F1"
}
{
  "en": "E4",
  "fr": "F2"
}
{
  "en": "E4",
  "fr": "F3"
}
{
  "en": "E4",
  "fr": "F4"
}

如何让它配对每个数组的第一个元素、第二个元素等。

最佳答案

您还可以使用 transpose 将数组“压缩”在一起:

[[.en,.fr] | transpose[] | {en:.[0], fr:.[1]} ]

https://stackoverflow.com/questions/64210344/

相关文章:

python - 无法用pip安装pycuda

r - 如何在保留 R 中的某些变量的同时将长整形为宽

ruby-on-rails - 使用 Cloudinary 和 Active Storage 时如何

postgresql - Ecto:如何用不同的随机数更新所有记录

terraform - 如何定义 "azurerm_resource_group_template_

unity3d - 如何将 Input.GetAxis ("Mouse X") 或 Input.Ge

swiftui - 编辑 : How we can alignment Image with Ima

kubernetes - 使用 Persistent Volume Claim 时是否必须显式创建

reactjs - 如何触发事件 React 测试库

r - 制作数据框每一列的向量并返回列表中的向量