examples - jq json file
Use jq para analizar una cadena JSON (2)
Puede usar la salida sin formato (-r) que liberará los caracteres:
jq -r .c myfile.json | jq .id
ADENDA: tiene la ventaja de que funciona en jq 1.3 y versiones posteriores; de hecho, debería funcionar en todas las versiones de jq que tengan la opción -r.
Estoy tratando de hacer que
jq
analice una estructura JSON como:
{
"a" : 1,
"b" : 2,
"c" : "{/"id/":/"9ee .../",/"parent/":/"abc.../"}/n"
}
Es decir, un elemento en el JSON es una cadena con json escapado.
Entonces, tengo algo en la línea de
$ jq [.c] myFile.json | jq [.id]
$ jq [.c] myFile.json | jq [.id]
Pero eso se bloquea con
jq: error: Cannot index string with string
Esto se debe a que la salida de .c es una cadena, no más JSON. ¿Cómo consigo jq para analizar esta cadena?
Mi solución inicial es usar sed para reemplazar todos los caracteres de escape (
/":/"
,
/",/"
y
/"
) pero eso es desordenado, supongo que hay una forma integrada en
jq
para hacer esto.
¡Gracias!
editar: Además, la versión jq disponible aquí es:
$ jq --version
jq version 1.3
Supongo que podría actualizarlo si fuera necesario.
jq tiene el
fromjson
incorporado para esto:
jq ''.c | fromjson | .id'' myFile.json
fromjson
se agregó en la versión 1.4.