Jq:选择一个 Prop 的键和值

Jq:选择一个 Prop 的键和值

我有一个 json 翻译文件,其结构如下。

{
  "STRING_ID_1": {
    "en": "Some englisch text.",
    "de": "Some german text."
  },
  "STRING_ID_2": {
    "en": "Some other englisch text.",
    "de": "Some other german text."
  },
  ...
}

使用它作为输入,我需要生成两个文件:“en.json”和“de.json”。它们应该具有以下格式。

{
  "STRING_ID_1": "Some englisch text.",
  ...
}

{
  "STRING_ID_1": "Some german text.",
  ...
}

在我看来,这jq就是您想要在这里使用的工具。谁能给我提供正确的命令?

答案1

$ cat file.json
{
  "STRING_ID_1": {
    "en": "Some englisch text.",
    "de": "Some german text."
  },
  "STRING_ID_2": {
    "en": "Some other englisch text.",
    "de": "Some other german text."
  }
}
$ jq 'with_entries(.value = .value.en)' file.json
{
  "STRING_ID_1": "Some englisch text.",
  "STRING_ID_2": "Some other englisch text."
}
$ jq 'with_entries(.value = .value.de)' file.json
{
  "STRING_ID_1": "Some german text.",
  "STRING_ID_2": "Some other german text."
}

重定向到其他文件名以保存输出。

该转换将每个顶级键的值重写为英语(或德语)字符串的值,而不是键值对的对象。

相关内容