Jq: Wählen Sie Schlüssel und Wert einer Requisite aus

Jq: Wählen Sie Schlüssel und Wert einer Requisite aus

Ich habe eine JSON-Übersetzungsdatei, die wie folgt strukturiert ist.

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

Mit diesem Input muss ich zwei Dateien generieren: „en.json“ und „de.json“. Sie sollten das folgende Format haben.

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

Und

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

Mir scheint, das jqist das Tool, das Sie hier verwenden möchten. Kann mir jemand den richtigen Befehl geben?

Antwort1

$ 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."
}

Um die Ausgabe zu speichern, leiten Sie sie zu einem anderen Dateinamen weiter.

Die Transformation schreibt den Wert jedes Schlüssels der obersten Ebene so um, dass er der Wert der englischen (oder deutschen) Zeichenfolge ist und nicht ein Objekt aus Schlüssel-Wert-Paaren.

verwandte Informationen