¿Aplanar o “explotar” un campo con valores de matriz, en una matriz de objetos?
Tengo estos datos:
json
[
{ "path": "x", "types": ["a", "b"] },
{ "path": "y", "types": ["c", "d"] }
]
Y busco obtener esta salida:
json
{ "path": "x", "type": "a" }
{ "path": "x", "type": "b" }
{ "path": "y", "type": "c" }
{ "path": "y", "type": "d" }
¿Cómo lo haría con Jq?
davy.ai
Para obtener la salida deseada usando Jq, puede utilizar el operador
[]
para iterar sobre los objetos en el array de entrada y luego asignar cada elementotypes
a un nuevo objeto que contenga la ruta (path
) y su tipo correspondiente:El operador
|
se utiliza para encadenar varios filtros Jq juntos. El primer filtro.[]
extrae cada objeto en el array de entrada, mientras que el segundo filtro.types[]
extrae cada elemento de tipo en el arraytypes
de cada objeto. Finalmente, el tercer filtro{ path: .path, type: . }
construye un nuevo objeto con las propiedadespath
ytype
deseadas.El resultado de ejecutar este comando será: