El primer convertidor JSON a CSV que escribí duró tres días en producción.
Era un "exportar a hoja de cálculo" botón en un panel de administración de Laravel, y mi lógica de conversión era - I' no estoy orgulloso de esto - values.join(","). Navegó a través de pruebas. Luego, un usuario exportó una lista de clientes donde se llamó a una empresa "Smith, Jones & Partners" y cada columna después de cambiar una posición a la derecha. Su contador importó 340 filas de datos desalineados antes de que alguien notara que los números de teléfono estaban en la columna de correo electrónico.
La coma en CSV no es un separador al que puedas unirte a tu manera de unirte. Es una gramática, definida en RFC 4180, con reglas de escape reales. Ese error es la razón por la que el Convertidor JSON a CSV Más tarde, construí para Toolz.dev, trata el escape como algo no negociable y por qué esta guía dedica tiempo real a los casos extremos, no solo al camino feliz.
Aquí están los cinco métodos que realmente uso, cuando cada uno gana y donde cada uno muerde.
TL;Dr: Para conversiones únicas, pegue su JSON en el Convertidor de JSON a CSV Toolz.dev- aplana objetos anidados con notación de puntos, escapa correctamente según RFC 4180 y se ejecuta al 100% en su navegador. Para trabajos recurrentes, script it:
pd.json_normalize()en Python o eljson2csvpaquete en nodo. Validar con el Formateador JSON primero, y mantenga el aplanamiento JSON - CSV original en un solo sentido.
¿Por qué necesitas CSV cuando ya tienes JSON?
Porque las personas que necesitan tus datos no viven en tu terminal. Cada solicitud de conversión que he recibido se reduce a una de cinco situaciones:
Los analistas trabajan en hojas de cálculo. Excel, Google Sheets, Tableau, Power BI: todos inhalan CSV de forma nativa y se ahogan en JSON anidado. Convertir la salida de la API a CSV es la forma en que los datos de ingeniería llegan al lado comercial.
Bases de datos Importes en masa de archivos planos. Postgreql'S COPY y mysql LOAD DATA Quiere entrada tabular. Existen columnas JSON, pero cargar en tablas relacionales reales significa aplanar primero.
Las migraciones necesitan una lingua franca. Mover datos entre un almacén NoSQL y uno relacional, o entre dos plataformas SaaS, CSV es el formato que ambos extremos entienden de manera confiable.
Cumplimiento le gustan los archivos planos. Algunos requisitos de archivo especifican formatos legibles por humanos. Un CSV abre en cualquier cosa, dentro de décadas.
Las partes interesadas no pueden leer JSON. Un gerente de producto que pregunta "¿puedo obtener eso como una hoja de cálculo?" es el desencadenante más común. Era el desencadenador de mi botón de exportación roto.

¿Qué hace que la conversión de JSON a CSV sea difícil?
JSON plano es trivial. esto:
[
{"id": 1, "name": "Alice", "email": "[email protected]", "age": 30},
{"id": 2, "name": "Bob", "email": "[email protected]", "age": 25}
]
Se convierte en esto, claves de encabezados, elementos a filas:
id,name,email,age
1,Alice,[email protected],30
2,Bob,[email protected],25
Pero las respuestas de la API reales nunca son planas. Se ven así:
[
{
"id": 1,
"name": "Alice",
"address": {"street": "123 Main St", "city": "San Francisco", "state": "CA"},
"skills": ["JavaScript", "Python", "Go"]
}
]
CSV no tiene ningún concepto de "dentro" por lo que elige una estrategia de aplanamiento, y cada una tiene un costo:
Aplanamiento de notación de puntos- las claves anidadas se convierten en encabezados compuestos:
id,name,address.street,address.city,address.state,skills
1,Alice,123 Main St,San Francisco,CA,"JavaScript; Python; Go"
Columnas indexadas para matrices- skills.0, skills.1, skills.2. Predecible, pero un récord con 14 habilidades produce 14 columnas para todos.
Células codificadas por JSON- mete el JSON sin procesar en la celda, con doble cita. Sin pérdidas, ilegible y entristece a los analistas.
La notación de puntos con matrices unidas es el valor predeterminado correcto para el consumo humano: it's what the Convertidor de Toolz.dev produce. Las columnas indexadas ganan cuando el código descendente necesita cada elemento direccionable. JSON-In-Cells es el último recurso para el viaje de ida y vuelta.
Método 1: ¿Cómo se convierte JSON a CSV en línea?
Mejor para: Conversiones únicas, no desarrolladores, cualquier cosa por debajo de unas pocas docenas de MB.
- Abre el Convertidor JSON a CSV.
- Pegue su JSON: una serie de objetos o un solo objeto.
- La herramienta detecta la estructura, aplana los objetos anidados a la notación de puntos y renderiza el CSV al instante.
- copiarlo o descargar el
.csv.
La razón por la que establezco esto de forma predeterminada a través de un script para cualquier cosa que no sea recurrente: configuración cero, escape correcto de RFC 4180 (aprendí esa lección), unión automática de claves a través de objetos inconsistentes y, porque es del lado del cliente, la API. La respuesta llena de correos electrónicos de clientes que acaba de pegar nunca sale de su máquina. Mire la pestaña Red si no lo hace & #39; no me crea; eso & #39; es la prueba que aplico a cada conversor en línea y la mayoría falla.
Donde es la herramienta incorrecta: conversiones recurrentes (escriturarla) y anidación profundamente patológica donde querrás elegir a mano la estrategia de aplanamiento.

Método 2: ¿Cómo se convierte JSON a CSV en JavaScript?
Mejor para: Generar canalizaciones, servicios de nodos, lógica de transformación personalizada.
Aquí's la versión mínima correcta - tenga en cuenta el escape, que es la parte que se saltó mi desastre de tres días:
function jsonToCsv(jsonArray) {
if (!jsonArray.length) return "";
const headers = Object.keys(jsonArray[0]);
const csvRows = [
headers.join(","),
...jsonArray.map(row =>
headers.map(header => {
const value = row[header] ?? "";
// RFC 4180: double embedded quotes, wrap anything containing , " or newline
const escaped = String(value).replace(/"/g, '""');
return /[,"\n\r]/.test(escaped) ? `"${escaped}"` : escaped;
}).join(",")
)
];
return csvRows.join("\n");
}
Para entradas anidadas, aplane primero y una las claves; tomar encabezados solo del primer objeto es el segundo error más común en los convertidores controlados manualmente:
function flattenObject(obj, prefix = "") {
const result = {};
for (const [key, value] of Object.entries(obj)) {
const newKey = prefix ? `${prefix}.${key}` : key;
if (value && typeof value === "object" && !Array.isArray(value)) {
Object.assign(result, flattenObject(value, newKey));
} else if (Array.isArray(value)) {
result[newKey] = value.join("; ");
} else {
result[newKey] = value;
}
}
return result;
}
function nestedJsonToCsv(jsonArray) {
const flattened = jsonArray.map(item => flattenObject(item));
// Union of ALL keys, not just the first object's
const headers = [...new Set(flattened.flatMap(Object.keys))];
// ...then emit rows exactly as in jsonToCsv above
}
O saltarse el giro manual - el json2csv El paquete ha manejado estos bordes durante años:
import { Parser } from "json2csv";
const parser = new Parser({ flatten: true });
const csv = parser.parse(data);
Método 3: ¿Cómo se convierte JSON a CSV en Python?
Mejor para: Flujos de trabajo de ciencia de datos, cualquier cosa que ya esté tocando pandas.
La one-liner de pandas cubre JSON plano:
import pandas as pd
df = pd.read_json("data.json")
df.to_csv("output.csv", index=False)
La función genuinamente útil es pd.json_normalize()- diseñado específicamente para respuestas API anidadas:
import pandas as pd
import requests
response = requests.get("https://api.example.com/users")
df = pd.json_normalize(response.json())
print(df.columns.tolist())
# ['id', 'name', 'skills', 'address.street', 'address.city', 'address.state']
# Arrays still need a decision — join them explicitly:
df["skills"] = df["skills"].apply(lambda x: "; ".join(x) if isinstance(x, list) else x)
df.to_csv("output.csv", index=False)
tenga en cuenta que json_normalize aplana anidados objetos pero se va arreglo como enumera Python: si omite el paso de unión, sus celdas CSV contienen ['JavaScript', 'Python'] palabra textual. Todo el mundo golpea esto una vez.
¿No hay pandas disponibles? La biblioteca estándar maneja FINE JSON FLAME:
import json, csv
with open("data.json") as f:
data = json.load(f)
with open("output.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
Método 4: ¿Cómo se convierte JSON a CSV desde la línea de comandos?
Mejor para: Scripts de shell, canalizaciones de CI, servidores donde la instalación de pandas es una exageración.
jq lo hace de forma nativa con @csv, que se escapa correctamente:
cat data.json | jq -r '
(.[0] | keys_unsorted) as $keys |
($keys | @csv),
(.[] | [.[$keys[]]] | @csv)
'
csvkit'S in2csv es la opción de reflexión baja:
pip install csvkit
in2csv data.json > output.csv
y molinero (mlr) brilla cuando quieres filtrar en el mismo pase:
mlr --json2csv filter '$age > 25' data.json > output.csv
La componibilidad es el punto - curl -s api.example.com/data | jq ... > report.csv es una tubería completa de API a Spreadsheet en una línea de Cron.
Método 5: ¿Puedes importar JSON directamente a Excel o Google Sheets?
Mejor para: No desarrolladores, datos actualizados en vivo, importaciones únicas.
sobresaliente: Datos → Obtener datos → de la web, pegar la URL de API y Power Query le ofrece un editor visual para expandir los registros anidados antes de cargarlos. Genuinamente bueno para reiteradas actualizaciones de la misma fuente.
Hojas de Google: Extensiones → Script de aplicaciones, luego una pequeña función de recuperación:
function importJSON(url) {
const response = UrlFetchApp.fetch(url);
const data = JSON.parse(response.getContentText());
if (!Array.isArray(data) || data.length === 0) return [["No data"]];
const headers = Object.keys(data[0]);
const rows = data.map(item => headers.map(h => item[h] ?? ""));
return [headers, ...rows];
}
utilizado en una celda como =importJSON("https://api.example.com/data").
Toma honesta: para las importaciones únicas, convirtiendo con el Herramienta en línea Y abrir el CSV es más rápido que cualquiera de los dos. Las rutas nativas de la hoja de cálculo ganan su costo de configuración solo cuando los datos se actualizan en un horario.
¿Qué método debería elegir?
| sistema | combate | JSON anidado | Uso recurrente | Los datos se mantienen locales |
|---|---|---|---|---|
| Convertidor en línea | nadie | automático | manual cada vez | Sí, del lado del cliente |
| JavaScript / JSON2CSV | Instalación de NPM | por flatten |
exquisito | sí |
| Python / Pandas | Instalación de pips | json_normalize |
exquisito | sí |
| JQ / CSVKit / MLR | Administrador de paquetes | Rutas manuales | Excelente (cron/ci) | sí |
| Excel / Hojas | Cuenta/Aplicación | Interfaz de usuario de consulta de energía | Bueno (Auto-Refresco) | Excel: Sí; Hojas: Servidores de Google |
Mi regla: busque la herramienta del navegador hasta la tercera vez I'm convirtiendo la misma forma de datos, luego se convierte en un script.
¿Qué casos de borde rompen la conversión de JSON a CSV?
Cuatro trampas representan casi todas las exportaciones rotas que he depurado:
Claves inconsistentes. El objeto 1 tiene email, el objeto 2 tiene phone, el objeto 3 tiene ambos. Tome encabezados del primer objeto únicamente y elimine datos silenciosamente. La solución es una unión de claves en todos los objetos, faltando valores como celdas vacías, lo que las buenas herramientas hacen automáticamente.
Caracteres especiales sin escapar. El problema "Smith, Jones y socios". según RFC 4180: valores de envoltura que contienen comas, comillas o nuevas líneas entre comillas dobles, y el doble de las comillas incrustadas ("He said ""hello""").
archivos grandes. Más allá de los 100 MB aproximadamente, el análisis de archivos completos resulta doloroso. Transmitir en su lugar - jq Streams, Pandas Reads en chunks y el formato de líneas JSON (un objeto por línea) hacen que ambos sean más fáciles. Para archivos de hasta unas pocas docenas de MB, la herramienta del navegador está bien ya que no hay carga.
codificación Los nombres y direcciones tienen caracteres que no son ASCII. Mantenga todo UTF-8 de punta en punta y sospecha de Excel en Windows, que históricamente quería una lista de materiales para detectar UTF-8 correctamente.
Y una práctica que no es opcional: Valida antes de convertir. Un archivo JSON truncado falla confundidamente a mitad de la conversión, pero obviamente en el Formateador JSON. Treinta segundos de validación superan a diez minutos de "¿por qué mi csv está vacío""
Preguntas frecuentes
¿Cómo convierto json a csv en línea gratis?
Pegue su JSON en el Convertidor JSON a CSV en Toolz.dev- genera instantáneamente CSV con objetos anidados aplanados y escapando manejados, luego le permite copiar o descargar el resultado. Sin registro y el procesamiento es 100% del lado del cliente, por lo que sus datos nunca salen de su navegador.
¿Puedo convertir json anidado a csv?
Sí. Los objetos anidados se aplanan a los encabezados de notación de puntos (address.city), y las matrices se unen en una cadena delimitada o se dividen en columnas indexadas. los Convertidor de Toolz.dev Aplica automáticamente notación de punto; en Python, pd.json_normalize() hace lo mismo.
¿Cómo convierto un archivo json a csv en python?
import pandas as pd; pd.read_json("data.json").to_csv("output.csv", index=False) Para JSON plano. Para estructuras anidadas, use pd.json_normalize(data) primero, y recuerde unirse usted mismo a cualquier columna de matriz, ya que normaliza las listas de hojas intactas.
¿Cuál es la mejor manera de convertir archivos JSON muy grandes?
Transmite en lugar de cargar: jq en la línea de comandos o pandas con lecturas fragmentadas. Convertir el archivo a líneas JSON (un objeto por línea) primero hace que la transmisión sea mucho más simple. Las herramientas del navegador son cómodas hasta unas pocas docenas de MB; más allá de ~100 MB, use la línea de comandos.
¿Cómo convierto csv de nuevo a json?
los Convertidor de CSV a JSON invierte el viaje: cada fila se convierte en un objeto codificado por la fila del encabezado. Programáticamente: pd.read_csv("data.csv").to_json(orient="records").
¿Por qué mi CSV tiene cotizaciones en torno a algunos valores?
Ese es el comportamiento correcto, no un error. RFC 4180 requiere comillas dobles en torno a cualquier valor que contenga comas, nuevas líneas o caracteres de comillas, con comillas incrustadas duplicadas. Las hojas de cálculo y los analizadores las quitan en la lectura.
¿La conversión de JSON a CSV es sin pérdida?
Para JSON plano, sí. Para JSON anidado, los valores sobreviven pero la jerarquía no 't - los encabezados de notación de puntos son aplanados representación, y no siempre puedes reconstruir el anidamiento original exacto de ellos. Mantenga el JSON de origen; trate el CSV como una vista derivada.
¿Por qué mis columnas están desalineadas después de la conversión?
Casi siempre es un error que se escapa: un valor que contiene una coma fue 't citado, por lo que los analizadores ven columnas adicionales a partir de ese momento. It' es el error exacto de mi botón de exportación Laravel. Utilice un convertidor que implemente RFC 4180 en lugar de valores de unión de cadenas y, si escribió el suyo propio, pruébelo con un valor como Smith, Jones & Partners.
¿Cómo convierto json a csv en excel o hojas de google?
Ambas aplicaciones importan JSON a través de un ayudante en lugar de una pasta. En Excel, use datos → Obtener datos → del archivo → de JSON, luego aplane la consulta en Power Query y cierre & cargar. En las hojas de Google, pegue pequeños arreglos a través de un script de aplicaciones temporales o convierta con el Convertidor JSON a CSV primero y abra el archivo resultante, generalmente la ruta más rápida para una única opción.
¿Qué método de JSON a CSV debo usar?
Para una única vez, un convertidor del lado del cliente es el más rápido y mantiene los datos privados. Para canalizaciones repetibles, use Python con pandas; para archivos enormes, transmita con jq en la línea de comandos y busque la importación de la hoja de cálculo solo cuando los no desarrolladores sean propietarios del flujo de trabajo. Haga coincidir la herramienta con la frecuencia con la que repetirá el trabajo, no solo con el tamaño del archivo.
Relacionar el método con el trabajo
JSON-TO-CSV parece una frase única hasta que una coma en el nombre de una empresa cambia 340 filas de datos de clientes, una columna a la derecha. El método no importa menos que respetar el formato: Escape por RFC 4180, Une tus claves, decide tu estrategia de aplanamiento a propósito y mantén el JSON original.
Para la próxima conversión única, el Convertidor JSON a CSV es el camino de quince segundos. Valida primero con el Formateador JSON, y cuando los datos deben viajar de regreso, el Convertidor de CSV a JSON cierra el bucle: los tres en su navegador, ninguno de ellos ve nunca el lado de su servidor de datos.
Artículos relacionados:
- La guía definitiva de las herramientas JSON (2026)
- Cómo formatear JSON en línea: guía completa con ejemplos
- Guía de herramientas de texto en línea gratis



