Tecnología · GUÍA PRÁCTICA
¿jq dice cannot index string with string? Prueba la forma JSON antes de cambiar el filtro
Conserva el modo de entrada y el tipo en cada ruta; protege solo el límite mixto probado y conserva los rechazos.

Una clave de objeto en jq falla si recibe string, array, number o boolean. Un generador puede imprimir primero un valor válido y fallar después con otro tipo, dejando salida parcial y un estado distinto de cero.
Conserva bytes, modo de entrada y filtro exacto. Construye un registro ruta-tipo; falla ante deriva de esquema o protege solo una colección legítimamente mixta y conserva rechazos.
Congela bytes, modo y filtro
Guarda input, jq --version, filtro, quoting, comando previo y presencia de -R, -s o -n. -R crea strings y -s crea un array.
Valida el archivo JSON y conserva un registro válido y uno fallido. Imprimir un valor antes de exit 5 sigue siendo un fallo.
Crea un registro ruta-tipo
Ejecuta type en la raíz y tras cada paso. RFC 8259 separa objects y arrays, y permite elementos de tipos distintos.
Registra ruta, tipo observado y cantidad. .[] sobre un object emite todos sus valores y una clave posterior puede recibir un string.
Separa tres fallos de forma
Separa recorrido raíz incorrecto, colección mixta y objeto codificado como string. El último exige decidir procedencia antes de parsear otra vez.
No trates echo como bytes autoritativos: el quoting puede cambiarlos. Lee el archivo guardado y compáralo con el schema del productor.
Protege solo el límite probado
Si la colección es legítimamente mixta, selecciona type==object antes de leer claves y guarda los demás con ruta y tipo.
try, catch u optional amplios pueden ocultar errores con empty. Úsalos solo si el contrato acepta el dato y aún cuentas rechazos.
Exige pruebas de salida y exit
Prueba object, array, string, boolean, null, clave ausente y array mixto. Reconcilia aceptados y rechazados con la entrada y comprueba exit.
La salida exige modo documentado, tipos estables, cantidad esperada, cero rechazos sin explicar y fallo no cero si un object requerido cambia a scalar.
