remove examples json string sed escaping jq

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.