Ir al contenido principal
CuteJSON
↑↓ Navegar Enter Seleccionar Esc Cerrar

Como validar JSON y realmente entender el error

Publicado 2 min de lectura Por Akash Kinkar Pandey

Un validador que solo dice “token inesperado” te ha dicho donde se rendio, no que hiciste mal. A menudo son lugares diferentes. Una coma faltante generalmente se reporta en el siguiente token, no en la coma que falta, y un corchete sin cerrar se reporta al final del archivo sin importar en que linea se abrio.

Lo que reporta el validador de JSON

Pega un documento y presiona Validar, o simplemente deja de escribir ya que la validacion se ejecuta automaticamente. El resultado nombra el construccion real que esta mal: comillas simples, una clave sin comillas, una coma final, una palabra clave con mayusculas y minusculas incorrectas como True o NULL, NaN o Infinity, un cero inicial, o una secuencia de escape incorrecta, cada una con la linea y columna donde comienza.

Claves duplicadas, que la mayoria de los validadores no mencionan

Una clave duplicada es JSON legal. La especificacion lo permite, y cada parser que probablemente uses conserva el ultimo valor y descarta silenciosamente el anterior. Eso significa que los datos pueden desaparecer de un documento que es perfectamente valido, sin ningun error en ningun lugar. Pegar

{"region":"eu-west-1","retries":3,"region":"us-east-1"}

y el validador lo reporta como JSON valido, una linea, y por separado advierte:

Clave duplicada “region”. El ultimo valor gana, el anterior en la linea 1 se descarta.

Eso es una advertencia, no un error, porque la especificacion realmente lo permite. Pero es el tipo de bug que es invisible hasta que algo aguas abajo lee el valor incorrecto, y la mayoria de las herramientas nunca lo mencionan.

Que cuenta como error versus advertencia

Un error significa que el documento no es JSON valido y nada aguas abajo deberia intentar parsearlo: un problema de sintaxis, un caracter ilegal, un error estructural. Una advertencia significa que el documento se parsea, pero algo en el merece una segunda mirada, como una clave duplicada. La linea de estado en la parte superior te dice cual estas viendo, y los errores marcan la linea fallida en el gutter del editor para que puedas encontrarla sin desplazarte.

Por que esto importa antes de confirmar o desplegar

Los archivos de configuracion, los fixtures de API y los datos generados todos pasan por un parser de JSON eventualmente, generalmente en produccion, donde el mensaje de error es lo que el parser por defecto del runtime te da. Detectar una coma final o una clave duplicada aqui, con un mensaje que nombra el error, es mas rapido que depurar el mismo problema despues de un despliegue.

Volver a todas las entradas