Herramientas de desarrollo · Convertidores de sintaxis
CSV a JSON y JSON a CSV: encabezados, valores de cadena y aplanamiento
· Cómo funciona
json csv formatos de datos
CSV es plano, sin tipo y ambiguo acerca de su propio delimitador, mientras que JSON está anidado y escrito. Esta publicación muestra cómo un convertidor asigna filas a objetos y viceversa, y dónde se pierde información en cada dirección.
Cada número apareció entre comillas: la exportación CSV se convirtió en JSON donde 42 se convirtió en "42" y el código postal mantuvo su cero inicial por una vez.
El libro de trabajo solicita ejemplos de CSV a JSON, pero ToolAcre nunca lee CSV. El motor anuncia exactamente nueve pares dirigidos y ninguno comienza con CSV. Leer un archivo requeriría opciones sobre delimitador, comillas, presencia de encabezado y tipos de celda; Este panel se niega a hacer cuatro conjeturas silenciosas. Por lo tanto, el artículo corregido documenta la dirección de envío JSON a CSV.
Esa decisión unidireccional es visible tanto en la interfaz como en los errores. CSV aparece como un objetivo, no como una fuente, y al intentar lo contrario, `UNSUPPORTED_CONVERSION` aparece con un consejo para usar una herramienta que pregunta sobre dialectos y tipos. Un título que sugiera ambas direcciones expresaría erróneamente el producto incluso si el tema general fuera común en otros lugares.
CSV no se lee aquí: comience con la ruta JSON a CSV que la herramienta realmente envía
Una matriz raíz JSON proporciona las filas. Un objeto simple se convierte en una fila. Un objeto cuya única clave contiene una matriz desenvuelve esa matriz y advierte que utilizó la propiedad nombrada. Los objetos con claves de hermanos adicionales no se desenvuelven, porque hacerlo descartaría o duplicaría esos hermanos.
Cada registro seleccionado se aplana antes de recopilar las columnas. Los registros pueden incluso ser escalares dentro de una matriz; esos usan una columna `value`. Se rechaza un escalar simple en la raíz del documento porque una cadena o número no define una tabla con registros y campos.
Elección de registros de JSON: matrices, objetos individuales y envoltorios de matrices de una clave Los tipos
JSON sobreviven solo como texto de celda. Los booleanos se convierten en `true` y `false`, los números usan su representación decimal y nulo se convierte en una celda vacía. CSV no puede distinguir esa cadena nula de la cadena vacía, por lo que el escritor cuenta los nulos y advierte sobre la ambigüedad en lugar de llamar equivalente al resultado.
Los enteros anchos ya están sujetos al análisis JSON antes de esta etapa, por lo que un literal numérico inseguro puede haber perdido precisión. Poner un identificador entre comillas conserva su texto. Las cadenas tipo fórmula reciben un apóstrofo adicional de forma predeterminada cuando comienzan con `=`, `+`, `-`, `@`, tabulación o retorno de carro; El numérico real `-5` sigue siendo un número y no tiene prefijo.
Por qué la salida CSV no puede conservar los tipos JSON
Las columnas son la unión de claves aplanadas en el orden en que se ven por primera vez. Si una fila tiene `a` y otra tiene `b`, la salida tiene ambas columnas y rellena cada campo faltante con una celda vacía. Una advertencia informa filas irregulares en lugar de cambiar valores bajo encabezados incorrectos.
La clasificación de claves de objetos no se aplica a CSV; La regla del escritor es la primera aparición en los registros. Eso hace que un ejemplo sea estable para una entrada JSON fija, pero no es un contrato de esquema. Organice las claves de origen deliberadamente o procese posteriormente el encabezado cuando una importación posterior requiera un orden prescrito.
Aplanamiento de datos anidados: rutas de puntos como dirección.ciudad, matrices como columnas indexadas o cadenas unidas y el punto en el que CSV simplemente no puede mantener la forma
Las claves de objetos anidados se unen con un punto: `address.city`. Las matrices utilizan el mismo separador e índices numéricos: `tags.0`, `tags.1`. Los objetos y matrices vacíos retienen una celda vacía en su propio camino en lugar de desaparecer. Esto produce un rectángulo al tiempo que admite que un árbol se ha proyectado en nombres.
Una clave de origen que ya contiene un punto es ambigua con una ruta anidada. ToolAcre detecta y advierte, pero no inventa una sintaxis de escape que las hojas de cálculo no entenderían. Los arreglos profundos o largos también pueden exceder el límite de columna 2,000, donde la conversión se rechaza en lugar de emitir una tabla que el software de hoja de cálculo normal no puede usar.
Ejemplo resuelto: una lista de clientes en ambos sentidos: CSV a JSON, editando un campo anidado y JSON de regreso a CSV con el anidamiento aplanado
Utilice `[ {"id":"0042","address":{"city":"Oslo"},"tags":["new","west"],"note":"=1+1"}, {"id":"0043","address":{"city":"Lima"},"tags":[],"note":null} ]`. Los encabezados incluyen id, dirección.ciudad, etiquetas.0, etiquetas.1 y nota. La segunda fila recibe espacios en blanco para los índices de etiquetas ausentes y su nota nula no se puede distinguir del texto vacío.
La primera nota tiene como prefijo un apóstrofo, por lo que una hoja de cálculo la trata como texto. Los registros terminan con CRLF, los campos que contienen delimitador, comilla o final de línea están entre comillas dobles y las comillas incrustadas están duplicadas. Al seleccionar punto y coma o tabulación se cambia el delimitador; Se puede agregar una lista de materiales UTF-8 opcional para los consumidores que la necesiten.
Ejemplo resuelto: una matriz de clientes anidada aplanada una vez en CSV
CSV con formato incorrecto o codificado ambiguamente está fuera de esta ruta porque no ingresa ningún CSV. El limpiador CSV es el lugar para seleccionar o detectar dialectos y reparar citas. Aquí la fuente es estricta JSON y el resultado sigue las convenciones del escritor documentadas.
El convertidor también limita la salida en 100,000 filas y 2,000 columnas. Las matrices vacías se rechazan porque un archivo sin encabezado ni fila no tiene forma de tabla. Esos límites son rutas de código impuestas, no promesas de rendimiento, y el artículo no inventa cifras de rendimiento.
Conclusión: CSV es una tabla, JSON es un árbol y cómo el panel de convertidores de sintaxis se mueve entre ellos sin cargar las filas.
JSON es un árbol tipificado; CSV es una tabla de texto. ToolAcre elige filas, aplana rutas, une columnas, cita campos y neutraliza texto peligroso, pero no puede preservar valores nulos frente a vacíos ni reconstruir el anidamiento más adelante. Esas pérdidas son ruido estructural más que de formato.
Utilice esta dirección cuando la salida en forma de hoja de cálculo sea el artefacto deseado. Si necesita CSV-to-JSON, elija un lector que pregunte sobre delimitador, encabezado y tipos. Rechazar lo contrario es más seguro que devolver JSON convincente elaborado a partir de conjeturas no revisadas.