Jq: Выберите ключ и значение одного реквизита

Jq: Выберите ключ и значение одного реквизита

У меня есть файл перевода 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."
}

Перенаправьте на другое имя файла, чтобы сохранить вывод.

Преобразование переписывает значение каждого ключа верхнего уровня, чтобы оно стало значением английской (или немецкой) строки, а не объектом пар ключ-значение.

Связанный контент