Los límites de la conversión entre JSON ↔ YAML y XML
La afirmación de que JSON es un subconjunto de YAML solo garantiza una dirección, y XML no tiene ningún mapeo oficial a JSON: todo se apoya en convenciones.
Convertir entre JSON y YAML, XML, CSV, TypeScript, Java, Go y SQL nunca es sin pérdidas. Lo importante es dejar explícito dónde se produce la pérdida.
8 artículosLa afirmación de que JSON es un subconjunto de YAML solo garantiza una dirección, y XML no tiene ningún mapeo oficial a JSON: todo se apoya en convenciones.
CSV es bidimensional, JSON tiene forma de árbol. La parte difícil de la conversión no es el código, sino decidir de antemano cómo se aplanan los arrays y cómo se preservan los tipos.
Las estructuras anidadas, los campos inconsistentes y los arrays de arrays son donde se rompe la conversión de JSON a hoja de cálculo. Cuatro enfoques ordenados por tiempo hasta el resultado, cada uno con sus compromisos.
Convertir JSON en sentencias INSERT de SQL oculta la división en tablas anidadas, la diferencia entre NULL y ausente, el escapado y las diferencias entre dialectos. Sentencias ejecutables y tablas comparativas para cada trampa.
Generar una interface a partir de un JSON de muestra es solo la mitad del trabajo: los campos opcionales, null, las uniones, las fechas y los enteros grandes necesitan una pasada humana, y los tipos no hacen ninguna validación en tiempo de ejecución.
El comando más copiado en los tutoriales, yq -P input.json > output.yaml, sigue emitiendo JSON en yq v4. Medimos yq v4.44.6, PyYAML 6.0.3 y js-yaml con una muestra de 2.39 MB, explicamos por qué la extensión de entrada fija el formato de salida y damos las recetas correctas para conversión por lotes, comillas, indentación y precisión de enteros grandes.
Nueve experimentos en un conversor real: la estrategia "claves de la primera fila" pierde campos en silencio, null, ausencia y cadena vacía se convierten todos en celdas vacías, un entero de 20 dígitos pierde precisión ya en JSON.parse, y un punto en una clave hace que dos rutas diferentes colisionen en la misma columna. Cómo se construye el encabezado, qué valores se deforman y cómo elegir una estrategia según el uso posterior.
Una mirada práctica a lo que un generador de JSON a Java emite de verdad — los números se convierten en Double, los objetos anidados en clases internas estáticas, y no produce ni una sola anotación de Jackson. La precisión monetaria, el renombrado de campos, el borrado de tipos, los campos desconocidos y las fechas son las cinco cosas que tendrás que añadir tú mismo, con código para copiar y pegar en cada caso.