DevToolBoxKOSTENLOS
Blog

CSV zu JSON Konverter: Vollstandiger Leitfaden mit Code-Beispielen

11 Min. Lesezeitvon DevToolBox

CSV zu JSON Konvertierung ist eine der haufigsten Datentransformationsaufgaben fur Entwickler. Ob Sie Daten zwischen Systemen migrieren, APIs erstellen oder Tabellen verarbeiten, die effiziente Konvertierung von CSV zu JSON ist unerlasslich. Dieser umfassende Leitfaden behandelt Konvertierungswerkzeuge, Parsing-Algorithmen, Codebeispiele in JavaScript, Python und Bash sowie Best Practices.

Testen Sie unser kostenloses Online CSV zu JSON Konvertierungstool.

Was ist CSV?

CSV steht fur Comma-Separated Values, ein durch RFC 4180 definiertes Klartextformat zur Speicherung tabellarischer Daten. Jede Zeile reprasentiert einen Datensatz, Werte werden durch Kommas oder andere Trennzeichen getrennt. Die erste Zeile dient typischerweise als Kopfzeile.

Das CSV-Format wird seit den Anfangen der Informatik verwendet und bleibt wegen seiner Einfachheit beliebt. Jeder Texteditor, jede Tabellenanwendung oder Programmiersprache kann CSV lesen und schreiben. Trotz der Einfachheit muss ein CSV-Parser mehrere knifflige Falle behandeln.

Wann CSV oder JSON verwenden: CSV eignet sich fur flache Tabellendaten wie Tabellenexporte und Datenbankdumps. JSON ist besser fur hierarchische Datenstrukturen, API-Antworten und Konfigurationsdateien.

CSV vs JSON: Detaillierter Vergleich

Die Unterschiede zwischen CSV und JSON zu verstehen hilft bei der Formatwahl und beim Verstandnis des Konvertierungsprozesses:

MerkmalCSVJSON
StrukturFlach, tabellarischHierarchisch (verschachtelte Objekte)
LesbarkeitEinfach fur simple DatenLesbar mit Formatierung
VerschachtelungNicht nativ unterstutztVollstandig unterstutzt
DatentypenAlles ist StringStrings, Zahlen, Booleans, null, Arrays, Objekte
DateigrosseGenerell kleinerGrosser (Schlussel wiederholt)
AnwendungsfalleTabellen, DB-Exporte, Data ScienceAPIs, Config, NoSQL, Web-Apps

Wie die CSV zu JSON Konvertierung funktioniert

Der CSV zu JSON Konverter Prozess umfasst mehrere Schritte:

  1. Kopfzeile lesen: Spaltennamen extrahieren, die zu JSON-Schlusseln werden.
  2. Jede Datenzeile parsen: Nach Trennzeichen aufteilen und Werte den Kopfzeilen zuordnen.
  3. Zitierte Felder behandeln: In Anfuhrungszeichen eingeschlossene Werte bilden ein Feld.
  4. Datentypen erkennen: Zahlen, Booleans und Null-Werte automatisch konvertieren.
  5. JSON-Array erstellen: Jede Zeile wird ein Objekt, alle in einem Array gesammelt.

Beispiel: CSV name,age,active\nAlice,30,true ergibt [{"name":"Alice","age":30,"active":true}].

CSV zu JSON Codebeispiele

JavaScript: CSV zu JSON

Mehrere Ansatze fur CSV zu JSON JavaScript Konvertierung: nativ, Papa Parse und csv-parser fur Node.js:

// ===== Native JavaScript: CSV to JSON =====

function csvToJson(csv) {
  const lines = csv.trim().split('\n');
  const headers = lines[0].split(',').map(h => h.trim());
  const result = [];

  for (let i = 1; i < lines.length; i++) {
    const values = lines[i].split(',');
    const obj = {};
    headers.forEach((header, index) => {
      let val = values[index]?.trim() || '';
      // Auto-detect types
      if (val === 'true') val = true;
      else if (val === 'false') val = false;
      else if (val === 'null' || val === '') val = null;
      else if (!isNaN(val) && val !== '') val = Number(val);
      obj[header] = val;
    });
    result.push(obj);
  }
  return result;
}

const csv = `name,age,city,active
Alice,30,New York,true
Bob,25,London,false
Charlie,35,Tokyo,true`;

console.log(JSON.stringify(csvToJson(csv), null, 2));
// [
//   { "name": "Alice", "age": 30, "city": "New York", "active": true },
//   { "name": "Bob", "age": 25, "city": "London", "active": false },
//   { "name": "Charlie", "age": 35, "city": "Tokyo", "active": true }
// ]

// ===== Papa Parse (Browser & Node.js) =====
// npm install papaparse

import Papa from 'papaparse';

// Parse CSV string
const result = Papa.parse(csvString, {
  header: true,         // Use first row as keys
  dynamicTyping: true,  // Auto-detect numbers and booleans
  skipEmptyLines: true, // Ignore blank lines
});

console.log(result.data);   // Array of JSON objects
console.log(result.errors); // Any parsing errors
console.log(result.meta);   // Metadata (delimiter, fields, etc.)

// Parse CSV file (browser)
const fileInput = document.querySelector('input[type="file"]');
fileInput.addEventListener('change', (e) => {
  Papa.parse(e.target.files[0], {
    header: true,
    dynamicTyping: true,
    complete: (results) => {
      console.log(results.data); // JSON array
    },
  });
});

// ===== Node.js: csv-parser (streaming) =====
// npm install csv-parser

const csvParser = require('csv-parser');
const fs = require('fs');

const results = [];
fs.createReadStream('data.csv')
  .pipe(csvParser())
  .on('data', (row) => results.push(row))
  .on('end', () => {
    console.log(JSON.stringify(results, null, 2));
  });

Python: CSV zu JSON

CSV zu JSON Python mit dem csv-Modul, pandas oder json.dumps:

# ===== Python csv module =====
import csv
import json

# CSV string to JSON
csv_string = """name,age,city,active
Alice,30,New York,true
Bob,25,London,false"""

reader = csv.DictReader(csv_string.strip().splitlines())
data = list(reader)
json_output = json.dumps(data, indent=2)
print(json_output)

# CSV file to JSON file
with open('input.csv', 'r', encoding='utf-8') as csv_file:
    reader = csv.DictReader(csv_file)
    data = list(reader)

with open('output.json', 'w', encoding='utf-8') as json_file:
    json.dump(data, json_file, indent=2, ensure_ascii=False)

# ===== pandas (recommended for large datasets) =====
import pandas as pd

# CSV to JSON with pandas
df = pd.read_csv('data.csv')

# Different JSON orientations
print(df.to_json(orient='records', indent=2))  # Array of objects
print(df.to_json(orient='columns', indent=2))  # Object of arrays
print(df.to_json(orient='index', indent=2))     # Object keyed by index

# With type conversion
df['age'] = pd.to_numeric(df['age'], errors='coerce')
df['active'] = df['active'].map({'true': True, 'false': False})

# Save to file
df.to_json('output.json', orient='records', indent=2, force_ascii=False)

# ===== Streaming large CSV files =====
import csv
import json

def csv_to_json_stream(csv_path, json_path, chunk_size=1000):
    """Convert large CSV to JSON using streaming."""
    with open(json_path, 'w') as out:
        out.write('[\n')
        with open(csv_path, 'r', encoding='utf-8') as f:
            reader = csv.DictReader(f)
            first = True
            for row in reader:
                if not first:
                    out.write(',\n')
                json.dump(row, out, ensure_ascii=False)
                first = False
        out.write('\n]')

csv_to_json_stream('large_file.csv', 'output.json')

Bash / Kommandozeile: CSV zu JSON

Kommandozeilen-Konvertierung mit csvkit, miller, jq und awk:

# ===== csvkit: csvjson command =====
# pip install csvkit

# Basic CSV to JSON conversion
csvjson data.csv > output.json

# Indent output for readability
csvjson --indent 2 data.csv > output.json

# Specify a key column (creates object instead of array)
csvjson --key id data.csv > output.json

# ===== miller (mlr): powerful data processing =====
# brew install miller (macOS) or apt install miller (Linux)

# CSV to JSON
mlr --icsv --ojson cat data.csv > output.json

# CSV to JSON with filtering
mlr --icsv --ojson filter '$age > 25' data.csv

# CSV to JSON with field selection
mlr --icsv --ojson cut -f name,city data.csv

# ===== jq + awk: lightweight approach =====
# Convert simple CSV to JSON with awk
awk -F',' 'NR==1{split($0,h);next}
{printf "{";for(i=1;i<=NF;i++)
printf "%s\"%s\":\"%s\"",
(i>1?",":""),h[i],$i;print "}"}' data.csv | jq -s '.'

# ===== Using sed + jq for quick conversion =====
# Convert CSV to JSON (simple, no quoted fields)
head -1 data.csv | tr ',' '\n' > /tmp/headers.txt
tail -n +2 data.csv | while IFS=',' read -r col1 col2 col3; do
  jq -n --arg a "$col1" --arg b "$col2" --arg c "$col3" \
    '{name:$a, age:($b|tonumber), city:$c}'
done | jq -s '.'

Dedizierte CLI-Tools: csvjson und miller

csvjson (csvkit) und miller (mlr) sind spezialisierte Kommandozeilentools fur Datenformatkonvertierung:

# ===== csvkit: full suite of CSV tools =====
# pip install csvkit

# View CSV statistics
csvstat data.csv

# Convert CSV to JSON
csvjson data.csv

# Convert Excel to CSV first, then to JSON
in2csv data.xlsx | csvjson > output.json

# Query CSV with SQL syntax, output as JSON
csvsql --query "SELECT name, age FROM data WHERE age > 25" data.csv | csvjson

# ===== miller (mlr): Swiss Army knife for data =====

# CSV to JSON (pretty-printed)
mlr --icsv --ojson --jflatsep '.' cat data.csv

# CSV to JSON with data transformation
mlr --icsv --ojson put '$full_name = $first . " " . $last' data.csv

# CSV to NDJSON (newline-delimited JSON, one object per line)
mlr --icsv --ojsonl cat data.csv

# Convert between any formats
mlr --icsv --ojson cat data.csv       # CSV -> JSON
mlr --ijson --ocsv cat data.json      # JSON -> CSV
mlr --icsv --otsv cat data.csv        # CSV -> TSV
mlr --itsv --ojson cat data.tsv       # TSV -> JSON

JSON zu CSV Konvertierung (Umkehrprozess)

Der umgekehrte Prozess, JSON zu CSV, beinhaltet das Flachmachen hierarchischer JSON-Daten in eine tabellarische Struktur.

Verschachtelte Objekte flachmachen: Verschachtelte Objekte werden mit Punkt-Notation oder Unterstrichen flachgemacht: user.name, user.address.city.

Beispiele fur JSON zu CSV Konvertierung in JavaScript und Python:

// ===== JavaScript: JSON to CSV =====

function jsonToCsv(jsonArray) {
  if (!jsonArray.length) return '';

  // Flatten nested objects
  function flatten(obj, prefix = '') {
    return Object.keys(obj).reduce((acc, key) => {
      const fullKey = prefix ? prefix + '.' + key : key;
      if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {
        Object.assign(acc, flatten(obj[key], fullKey));
      } else if (Array.isArray(obj[key])) {
        acc[fullKey] = obj[key].join('|'); // Join arrays with pipe
      } else {
        acc[fullKey] = obj[key];
      }
      return acc;
    }, {});
  }

  const flatData = jsonArray.map(item => flatten(item));
  const headers = [...new Set(flatData.flatMap(Object.keys))];

  const csvRows = [headers.join(',')];
  for (const row of flatData) {
    const values = headers.map(h => {
      const val = row[h] ?? '';
      // Quote values containing commas, quotes, or newlines
      const str = String(val);
      return str.includes(',') || str.includes('"') || str.includes('\n')
        ? '"' + str.replace(/"/g, '""') + '"'
        : str;
    });
    csvRows.push(values.join(','));
  }
  return csvRows.join('\n');
}

// Example with nested JSON
const data = [
  { name: "Alice", address: { city: "NYC", zip: "10001" }, tags: ["dev", "admin"] },
  { name: "Bob", address: { city: "London", zip: "EC1A" }, tags: ["user"] },
];
console.log(jsonToCsv(data));
// name,address.city,address.zip,tags
// Alice,NYC,10001,dev|admin
// Bob,London,EC1A,user
# ===== Python: JSON to CSV =====
import json
import csv
import pandas as pd

# Method 1: pandas (easiest)
with open('data.json') as f:
    data = json.load(f)

df = pd.json_normalize(data, sep='.')  # Flatten nested objects
df.to_csv('output.csv', index=False)

# Method 2: csv module (manual control)
def json_to_csv(json_data, csv_path):
    """Convert JSON array to CSV, handling nested objects."""
    flat_data = [flatten_dict(item) for item in json_data]
    fieldnames = list(dict.fromkeys(
        key for item in flat_data for key in item.keys()
    ))

    with open(csv_path, 'w', newline='', encoding='utf-8') as f:
        writer = csv.DictWriter(f, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(flat_data)

def flatten_dict(d, parent_key='', sep='.'):
    items = []
    for k, v in d.items():
        new_key = f"{parent_key}{sep}{k}" if parent_key else k
        if isinstance(v, dict):
            items.extend(flatten_dict(v, new_key, sep).items())
        elif isinstance(v, list):
            items.append((new_key, '|'.join(str(i) for i in v)))
        else:
            items.append((new_key, v))
    return dict(items)

Behandlung von Randfallen beim CSV-Parsing

Ein robuster CSV-Parser muss zahlreiche Randfalle behandeln:

UTF-8 BOM: Manche Anwendungen stellen ein unsichtbares BOM-Zeichen voran. Ihr Parser sollte es entfernen.

Trennzeichen-Variationen: Semikolon in Europa, Tab fur TSV. Ein guter Parser erkennt das Trennzeichen automatisch.

Fehlende Werte: Nachgestellte Kommas oder leere Felder in der Mitte. Der Parser sollte sie als leere Strings oder null beibehalten.

Mehrzeilige Felder: RFC 4180 erlaubt Werte uber mehrere Zeilen in Anfuhrungszeichen.

Sonderzeichen und Escaping: Anfuhrungszeichen in zitierten Feldern werden durch Verdoppelung escaped.

Inkonsistente Zeilenlangen: Ein robuster Parser sollte kurze Zeilen auffĂŒllen oder lange abschneiden.

// Robust CSV parser handling all edge cases
function parseCSV(text, delimiter = ',') {
  // Strip UTF-8 BOM if present
  if (text.charCodeAt(0) === 0xFEFF) {
    text = text.slice(1);
  }

  const rows = [];
  let row = [];
  let field = '';
  let inQuotes = false;

  for (let i = 0; i < text.length; i++) {
    const char = text[i];
    const next = text[i + 1];

    if (inQuotes) {
      if (char === '"' && next === '"') {
        field += '"'; // Escaped quote
        i++;          // Skip next quote
      } else if (char === '"') {
        inQuotes = false; // End of quoted field
      } else {
        field += char; // Regular char inside quotes
      }
    } else {
      if (char === '"') {
        inQuotes = true; // Start quoted field
      } else if (char === delimiter) {
        row.push(field);
        field = '';
      } else if (char === '\n' || (char === '\r' && next === '\n')) {
        row.push(field);
        rows.push(row);
        row = [];
        field = '';
        if (char === '\r') i++; // Skip \n in \r\n
      } else {
        field += char;
      }
    }
  }

  // Push last field and row
  if (field || row.length) {
    row.push(field);
    rows.push(row);
  }

  return rows;
}

CSV Best Practices

Befolgen Sie diese Best Practices fur maximale Kompatibilitat:

Immer UTF-8 verwenden: Der universelle Standard fur Textcodierung.

Felder konsistent zitieren: Am sichersten ist es, alle Felder zu zitieren.

Kopfzeile einschliessen: Immer mit beschreibenden Namen und konsistenten Namenskonventionen.

Konsistente Trennzeichen verwenden: Ein Trennzeichen fur die gesamte Datei.

Grosse Dateien streamen: Streaming-Parser fur Dateien grosser als der verfugbare Speicher.

Daten nach Konvertierung validieren: Datensatzanzahl, Datentypen und Integritat prufen.

Haufig gestellte Fragen

Wie konvertiert man CSV zu JSON?

Parsen Sie die Kopfzeile fur Spaltennamen, dann mappen Sie jede Zeile auf die entsprechenden Schlussel. Verwenden Sie Bibliotheken wie Papa Parse (JavaScript) oder pandas (Python), oder unser kostenloses Online-Tool.

Was ist der Unterschied zwischen CSV und JSON?

CSV ist ein flaches Tabellenformat, alle Werte sind Strings. JSON ist hierarchisch mit Unterstutzung fur verschachtelte Objekte, Arrays und mehrere Datentypen. CSV ist kompakter, JSON ausdrucksstarker.

Kann CSV verschachtelte Daten verarbeiten?

Nein, CSV unterstutzt nativ keine verschachtelten Strukturen. Man muss Daten flachmachen mit Punkt-Notation, JSON-Codierung in CSV-Feldern oder separaten CSV-Dateien.

Die CSV zu JSON Konvertierung ist eine grundlegende Fahigkeit fur Entwickler und Datenanalysten. Nutzen Sie unser kostenloses Tool fur sofortige Konvertierungen.

CSV und JSON sofort konvertieren mit unserem kostenlosen Online-Tool.

𝕏 Twitterin LinkedIn
War das hilfreich?

Bleiben Sie informiert

Wöchentliche Dev-Tipps und neue Tools.

Kein Spam. Jederzeit abbestellbar.

Verwandte Tools ausprobieren

📊CSV ↔ JSON Converter{ }JSON FormatterY{}JSON ↔ YAML Converter<>XML Formatter

Verwandte Artikel

JSON vs YAML vs TOML: Welches Config-Format sollten Sie verwenden?

Vergleichen Sie JSON, YAML und TOML Konfigurationsformate.

JSON Formatter & Validator: JSON Online Formatieren und Validieren

Kostenloser Online JSON Formatter und Validator. JSON formatieren, Syntaxfehler finden, mit Code-Beispielen in JavaScript und Python.

JSON zu TypeScript: VollstÀndiger Leitfaden mit Beispielen

Erfahren Sie, wie Sie JSON-Daten automatisch in TypeScript-Interfaces konvertieren. Verschachtelte Objekte, Arrays, optionale Felder und Best Practices.