![Jq: seleccione la clave y el valor de una propiedad](https://rvso.com/image/178463/Jq%3A%20seleccione%20la%20clave%20y%20el%20valor%20de%20una%20propiedad.png)
Tengo un archivo de traducción json estructurado así.
{
"STRING_ID_1": {
"en": "Some englisch text.",
"de": "Some german text."
},
"STRING_ID_2": {
"en": "Some other englisch text.",
"de": "Some other german text."
},
...
}
Usando esto como entrada, necesito generar dos archivos: "en.json" y "de.json". Deberían tener el siguiente formato.
{
"STRING_ID_1": "Some englisch text.",
...
}
y
{
"STRING_ID_1": "Some german text.",
...
}
Me parece que esa jq
es la herramienta que quieres utilizar aquí. ¿Alguien puede proporcionarme el comando correcto?
Respuesta1
$ 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."
}
Redirigir a algún otro nombre de archivo para guardar el resultado.
La transformación reescribe el valor de cada clave de nivel superior para que sea el valor de la cadena inglesa (o alemana) en lugar de un objeto de pares clave-valor.