Convertidor JSON a CSV - Convertir Arrays JSON a CSV Online
Convierte entre arrays JSON y formatos CSV/TSV con aplanamiento de objetos anidados. Vista previa en tabla y delimitadores personalizables.
Preguntas frecuentes
¿Qué es un convertidor de JSON a CSV?
Un convertidor de JSON a CSV es una herramienta que transforma datos JSON (JavaScript Object Notation) en formato tabular CSV (valores separados por comas) o TSV (valores separados por tabulaciones), y viceversa. JSON almacena datos como objetos anidados y matrices, mientras que CSV representa datos en filas y columnas separadas por un carácter delimitador. Los desarrolladores y analistas de datos necesitan frecuentemente convertir entre estos formatos al exportar respuestas de API a hojas de cálculo, importar datos CSV en aplicaciones basadas en JSON o migrar datos entre sistemas.
¿Cómo uso este convertidor de JSON a CSV?
1. Seleccione la dirección de conversión usando las pestañas: JSON a CSV o CSV a JSON. 2. Pegue sus datos en el área de entrada o cargue un archivo. 3. La conversión ocurre automáticamente en tiempo real. 4. Para JSON a CSV: elija su delimitador y las opciones. 5. Para CSV a JSON: el delimitador se detecta automáticamente. 6. Revise la salida y la tabla de vista previa. 7. Copie o descargue el resultado.
¿Mis datos están seguros? ¿Se envían a un servidor?
Sus datos están 100% seguros y nunca salen de su navegador. Este convertidor se ejecuta completamente en JavaScript del lado del cliente. No se transmiten datos a ningún servidor, no se almacenan en ninguna base de datos ni se registran en ningún lugar. Todo el procesamiento ocurre localmente en su dispositivo.
¿Cómo maneja el convertidor los objetos JSON anidados?
Los objetos JSON anidados se aplanan usando encabezados de columna con notación de punto. Por ejemplo, {"user": {"name": "Alice", "address": {"city": "Seoul"}}} produce columnas llamadas user.name y user.address.city. Las matrices dentro de los objetos pueden manejarse de dos maneras: modo Stringify las convierte en cadenas JSON en las celdas, o modo Expand crea una fila separada para cada elemento de la matriz.
¿Qué formato CSV/TSV produce esta herramienta?
La herramienta produce salida CSV compatible con RFC 4180. Los campos que contienen el carácter delimitador, comillas dobles o saltos de línea se encierran automáticamente entre comillas dobles. Las comillas dobles dentro de los valores de campo se escapan duplicándolas. La primera fila contiene encabezados de columna por defecto.
¿Qué hago si mis datos JSON no son una matriz?
Este convertidor espera una matriz JSON de objetos como entrada. Si su entrada es un solo objeto JSON, el convertidor lo envolverá automáticamente en una matriz de un solo elemento. Si sus datos están anidados y la matriz está dentro de una propiedad, necesitará extraer primero la porción de la matriz.
¿Cómo convierto CSV de vuelta a JSON con objetos anidados?
Al convertir CSV a JSON, el convertidor produce una matriz JSON plana de objetos por defecto. La inferencia de tipos está soportada: las cadenas numéricas se convierten en números, true/false en booleanos y null en null. Si necesita todos los valores como cadenas, desactive la opción de detección automática de tipos.
Ejemplos de código
// JSON Array to CSV Converter (Client-side, no dependencies)
function flattenObject(obj, prefix = "") {
const result = {};
for (const [key, value] of Object.entries(obj)) {
const fullKey = prefix ? `${prefix}.${key}` : key;
if (value !== null && typeof value === "object" && !Array.isArray(value)) {
Object.assign(result, flattenObject(value, fullKey));
} else {
result[fullKey] = value;
}
}
return result;
}
function escapeField(value, delimiter = ",") {
if (value === null || value === undefined) return "";
const str = typeof value === "object" ? JSON.stringify(value) : String(value);
if (str.includes(delimiter) || str.includes('"') || str.includes("\n")) {
return `"${str.replace(/"/g, '""')}"`;
}
return str;
}
function jsonToCsv(jsonArray, options = {}) {
const { delimiter = ",", includeHeader = true, flatten = true } = options;
const rows = flatten ? jsonArray.map(item => flattenObject(item)) : jsonArray;
const headerSet = new Set();
rows.forEach(row => Object.keys(row).forEach(key => headerSet.add(key)));
const headers = Array.from(headerSet);
const lines = [];
if (includeHeader) {
lines.push(headers.map(h => escapeField(h, delimiter)).join(delimiter));
}
for (const row of rows) {
lines.push(headers.map(h => escapeField(row[h], delimiter)).join(delimiter));
}
return lines.join("\n");
}
// Example usage
const data = [
{ name: "Alice", age: 30, address: { city: "Seoul" } },
{ name: "Bob", age: 25, address: { city: "Tokyo" } }
];
console.log(jsonToCsv(data));
// name,age,address.city
// Alice,30,Seoul
// Bob,25,Tokyo