JSON zusammenführen

#1Eingabe
#2Eingabe

Kostenloses Online-Tool zum Zusammenführen von JSON. Mit einem Klick mehrere JSON-Objekte nach einer gewählten Strategie (Tief / Flach / Array Verketten / Array Ersetzen) zusammenführen, mit 4 Konfliktlösungsmodi. Ideal für Multi-Source-Aggregation, Config-Schichtung und i18n-Konsolidierung.

Ähnliche Tools

Was ist JSON zusammenführen (JSON Merge)?

JSON zusammenführen (JSON Merge) ist die Operation, zwei oder mehr JSON-Objekte nach bestimmten Regeln zu einem neuen Objekt zu kombinieren. In der Engineering-Praxis tritt es äußerst häufig auf: ① JSON von mehreren Microservices zu einer einheitlichen Antwort zusammensetzen (BFF-Layer-Aggregation); ② Base / Env / User Config nach 'Environment Override'-Logik zur finalen Config kombinieren (Node.js config, Viper, Spring Cloud Config); ③ Mehrere i18n-Übersetzungsdateien zu einem vollständigen Wörterbuch zusammenführen, überschreiben und ergänzen; ④ Mehrere Mock-Daten-Arrays zu vollständigen Testdaten kombinieren; ⑤ Mehrere API-paginierte Antworten zu einem vollständigen Datensatz zusammenführen.

Die Schwierigkeit liegt nicht im 'Zusammenführen', sondern im 'Umgang mit Konflikten'. Es gibt 4 gängige Konfliktlösungsstrategien: ① **Deep Merge**: Rekursiv in verschachtelte Objekte, jeder Schlüssel wird einzeln zusammengeführt, nur Blattknotenkonflikte werden überschrieben - ideal für Config-Schichtung. ② **Shallow Merge**: Nur Top-Level-Schlüssel zusammenführen, gleichnamige Schlüssel vollständig ersetzen - einfachste Semantik, ähnlich wie `Object.assign`. ③ **Array Concat**: Array-Werte zu einem langen Array verketten, wobei alle Elemente in der Reihenfolge erhalten bleiben - ideal für API-Aggregation. ④ **Array Replace**: Array-Werte vollständig durch die spätere Eingabe ersetzen - ideal für Config-Override.

Auf der Implementierungsebene verwendet Deep Merge typischerweise stapelbasierte Rekursion: zuerst prüfen, ob beide Seiten gewöhnliche Objekte sind (keine Arrays, kein null), dann jeden Schlüssel rekursiv verarbeiten; bei Typ-Inkonsistenzen (z. B. eine Seite ist Objekt, die andere Array für denselben Namen) folgt in der Regel die 'letzte Eingabe gewinnt'-Regel ohne Typkonvertierung. Das JSON-Zusammenführungs-Tool von GeekFormat enthält die oben genannten 4 Strategien und ermöglicht direktes Umschalten auf der Seite; Sie können 2 bis N JSON-Segmente gleichzeitig einfügen, automatisch in Reihenfolge zusammenführen und einheitlich formatierte Ergebnisse ausgeben. Der gesamte Zusammenführungsprozess passiert lokal im Browser, Originaldaten werden nicht hochgeladen.

Anwendungsfälle

  • Mehrere Microservice-API-Antworten zu einer einheitlichen JSON-Struktur für das Frontend zusammenführen
  • Base / dev / prod geschichtete Config-Dateien zur finalen Config via Environment-Override aggregieren
  • Mehrere i18n-Übersetzungsdateien nach Sprache zusammenführen, deduplizieren und zu einem vollständigen Wörterbuch ergänzen
  • Mehrere Mock-Daten-Arrays oder paginierte API-Antworten zu einem vollständigen Datensatz kombinieren
  • Frontend-Komponenten-Config: Standard-Config + Benutzeranpassung + Remote-A/B-Experiment-Config zusammenführen
  • Während der Datenmigration mehrere Quellsystem-JSON-Exporte zu einem einheitlichen nachgelagerten Format zusammenführen

Anleitung

  1. Fügen Sie 2 bis N zusammenzuführende JSON-Segmente in die linken Eingabefelder ein (standardmäßig 2), oder klicken Sie auf '+' um weitere Eingaben hinzuzufügen
  2. Wählen Sie eine Zusammenführungsstrategie aus dem Dropdown der Toolbar: Deep Merge / Shallow Merge / Array Concat / Array Replace
  3. Klicken Sie auf die Schaltfläche 'Zusammenführen'; der rechte Ausgabebereich zeigt das formatierte Ergebnis. Wenn die Eingabe Syntaxfehler aufweist, werden die spezifische Zeilennummer und die Fehlermeldung angezeigt
  4. Nach Bestätigung des Ergebnisses klicken Sie auf 'Kopieren', um die zusammengeführte Ausgabe in die Zwischenablage zu legen, oder auf 'Herunterladen', um als merged.json für weitere Formatierung, Schema-Validierung usw. zu speichern

Funktionen

  • 4 Zusammenführungsstrategien: Deep Merge / Shallow Merge / Array Concat / Array Replace, mit einem Klick umschaltbar für verschiedene Geschäftsszenarien
  • Unterstützt 2 bis N JSON-Segmente: standardmäßig 2 Eingabefelder, klicken Sie auf '+' um dynamisch weitere Quell-JSONs hinzuzufügen, flexibel für Multi-Source-Aggregation
  • Tiefe rekursive Zusammenführung: behandelt intelligent mehrstufig verschachtelte Objekte, löst Blattkonflikte nach angegebener Strategie und bewahrt alle gültigen Felder
  • Flexible Konfliktlösung: Top-Level-Konflikte folgen der ausgewählten Strategie; Konflikte in verschachtelten Objekten gehen tief; Array-Konflikte unterscheiden sich via arrayConcat/arrayReplace
  • Einheitlich formatierte Ausgabe: Ergebnisse werden mit 2-Leerzeichen-Einrückung angezeigt für einfache menschliche Überprüfung und direktes Kopieren in nachgelagerte Tools
  • Echtzeit-Ausführung: klicken Sie direkt nach dem Einfügen auf 'Zusammenführen' für Ergebnisse; Fehler zeigen spezifische JSON-Zeilennummern und Fehlermeldungen
  • Lokale Verarbeitung für Privatsphäre: Parsing, Zusammenführung und Formatierung passieren alle lokal im Browser, keine Eingabe wird an einen Server gesendet
  • Nahtloser Übergang zu nachgelagerten Tools: Ergebnisse können mit einem Klick in JSON-Formatierer, Schema-Validator, Code-Generatoren usw. kopiert werden

Codebeispiele

Deep Merge in JavaScript mit lodash.merge

javascript
// npm install lodash.merge
import merge from 'lodash.merge';

const a = { user: { name: 'Alice', age: 28 }, tags: ['admin'] };
const b = { user: { email: 'a@x.com', age: 29 }, tags: ['editor'] };

// Deep Merge: verschachtelte Objekte rekursiv zusammenführen, Blattknoten nehmen den späteren Wert
const deep = merge({}, a, b);
console.log(deep);
// => { user: { name: 'Alice', age: 29, email: 'a@x.com' }, tags: ['admin', 'editor'] }

// Shallow Merge: Top-Level-Schlüssel werden vollständig ersetzt, kein Abstieg in Verschachtelung
const shallow = Object.assign({}, a, b);
console.log(shallow);
// => { user: { email: 'a@x.com', age: 29 }, tags: ['editor'] }

Deep Merge in Python mit mergedeep

python
# pip install mergedeep
from mergedeep import merge

a = {"user": {"name": "Alice", "age": 28}, "tags": ["admin"]}
b = {"user": {"email": "a@x.com", "age": 29}, "tags": ["editor"]}

# Deep Merge
result = merge(a, b)
print(result)
# => {'user': {'name': 'Alice', 'age': 29, 'email': 'a@x.com'}, 'tags': ['admin', 'editor']}

# Hinweis: mergedeep verkettet standardmäßig Arrays; String/Number überschreiben.
# Für Array-Überschreiben fügen Sie strategy='override' hinzu

Multi-JSON-Zusammenführung in der CLI mit jq -s

bash
# Mehrere JSON-Arrays zu einem langen Array zusammenführen
jq -s 'add' a.json b.json c.json

# Mehrere JSON-Objekte rekursiv zusammenführen (jq 1.6+)
jq -s 'reduce .[] as $item ({}; . * $item)' a.json b.json

# Shallow Merge: b's Top-Level-Schlüssel auf a überlagern
jq -s '.[0] * .[1]' a.json b.json

# Arrays zusammenführen und nur deduplizierte id-Felder behalten
jq -s '[.[].items[]] | unique_by(.id)' a.json b.json

Häufig gestellte Fragen

Sind JSON zusammenführen und JSON verketten dasselbe?

Nicht genau. 'Verketten' bedeutet normalerweise, Strings direkt zusammenzufügen, ohne Struktur; 'zusammenführen' bedeutet, mehrere Objekte rekursiv nach JSON-Struktur zu kombinieren und Schlüsselnamen-Konflikte zu behandeln. Dieses Tool bezieht sich auf Letzteres - strukturierte JSON-Zusammenführung.

Wie wähle ich zwischen Deep Merge und Shallow Merge?

Shallow Merge: behandelt nur Top-Level-Schlüssel, gleichnamige Schlüssel werden vollständig ersetzt, ähnlich wie `Object.assign` - am einfachsten. Deep Merge: rekursiv in verschachtelte Objekte, an jedem Blattknoten zusammenführen - intelligenter. Wenn Ihre mehreren JSONs an verschiedenen Sub-Pfaden Felder hinzufügen (z. B. base.user.name und override.user.email), verwenden Sie Deep Merge. Wenn Sie ein gesamtes Sub-Objekt auf einmal ersetzen möchten, verwenden Sie Shallow Merge.

Beim Zusammenführen von Arrays, nach Reihenfolge oder Index?

Standardmäßig folgt dieses Tool der 'Concat'-Semantik: es kombiniert mehrere Arrays zu einem langen Array, wobei die Reihenfolge aller Elemente erhalten bleibt. Wenn Ihre beiden Arrays die gleiche Länge haben und Sie Index-für-Index-Überschreiben möchten, wechseln Sie zu 'arrayReplace' und umwickeln Sie das Array manuell zuerst in einer Objektstruktur.

Wie wird der Konfliktgewinner entschieden, wenn Schlüsselnamen kollidieren?

Entschieden durch Eingabereihenfolge: das spätere JSON überschreibt frühere gleichnamige Schlüssel (vollständiges Überschreiben unter Shallow / Array Replace, nur Blatt-Überschreiben unter Deep Merge). Wenn Sie 'frühere Eingabe gewinnt' möchten, vertauschen Sie die Eingabereihenfolge.

Kann es JSON-Arrays zusammenführen?

Ja. Zwei typische Szenarien: ① Mehrere JSONs sind alle Arrays → verwenden Sie 'arrayConcat' zum Zusammenführen zu einem langen Array; ② Mehrere JSONs sind Objekte, aber ein Feld ist ein Array → verwenden Sie 'arrayConcat' zum Zusammenführen der Arrays oder 'arrayReplace' um den Wert der späteren Eingabe beizubehalten.

Kann es mehr als 2 JSONs auf einmal zusammenführen?

Ja. Standardmäßig gibt es 2 Eingabefelder; klicken Sie auf '+' um dynamisch weitere hinzuzufügen. Alle Eingaben werden von oben nach unten in der Reihenfolge zusammengeführt. Theoretisch unbegrenzt, aber der Browser-Speicher begrenzt die Größe einzelner Segmente.

Wie wird die Schlüsselreihenfolge nach dem Zusammenführen bestimmt?

Deep Merge: die Schlüsselreihenfolge des ersten JSON hat Priorität; neue Schlüssel späterer JSONs werden am Ende der entsprechenden Ebene angehängt. Shallow Merge: nach Eingabereihenfolge - alle Schlüssel des ersten JSON erscheinen zuerst, neue Schlüssel späterer JSONs werden auf Top-Level angehängt; gleichnamige Schlüssel behalten die Reihenfolge des ersten unverändert.

Ändert das Tool Feldtypen?

Nein, es ändert nicht aktiv Typen. Wenn unter Shallow / Array Replace-Strategie die gleichnamigen Schlüssel in zwei JSONs unterschiedliche Typen haben (eines Objekt, eines Array), folgt es 'letzte Eingabe gewinnt' und überschreibt direkt, ohne Typkonvertierung. Deep Merge rekursiert nur, wenn beide Seiten gewöhnliche Objekte sind; in allen anderen Fällen wird überschrieben.

Werden null-Werte beibehalten?

Ja. null ist ein gültiger JSON-Wert; dieses Tool behandelt null als normalen Blattwert: unter Shallow / Array Replace überschreibt ein späteres null den früheren Wert; unter Deep Merge wird null nach der Überschreibensregel behandelt und nicht speziell übersprungen.

Gibt die Zusammenführung Statistiken aus?

Ja. Der Ergebnisbereich zeigt die Anzahl der JSON-Segmente und die Gesamtzahl der Schlüssel für eine schnelle Überprüfung; die vollständige Feldliste finden Sie in der formatierten Ausgabe rechts.

Lädt das Tool mein JSON auf einen Server hoch?

Nein. Parsing, Zusammenführung und Formatierung passieren alle lokal im Browser; Eingabe und Zwischenergebnisse werden nicht an irgendeinen Server gesendet. Funktioniert offline, geeignet für sensible Multi-Source-JSON (z. B. Produktions-Env-Configs, interne API-Antworten).

Was ist die beste Verwendungsreihenfolge mit JSON-Formatierer und Schema-Validator?

Empfohlene Kette: ① JSON reparieren (ungültiges JSON bereinigen) → ② Dieses JSON-Zusammenführungs-Tool (Multi-Source-Zusammenführung) → ③ JSON formatieren (Einrückung vereinheitlichen) → ④ JSON Schema-Validierung (endgültige Struktur verifizieren) → ⑤ Code-Generierung (TypeScript / Java / Go usw.). Wählen Sie die Schritte, die Sie benötigen.

Fehlerbehebung

Zusammenführung zeigt 'Unexpected token' oder 'Invalid JSON'

Ursache: Mindestens ein Eingabefeld enthält ungültiges JSON. Lösung: Fügen Sie zuerst das fehlerhafte JSON in das JSON-Reparatur-Tool zur Bereinigung ein (behandelt automatisch Kommas am Ende, einfache Anführungszeichen, Keys ohne Anführungszeichen usw.), dann zurück zu diesem Tool; oder prüfen Sie, ob äußere geschweifte Klammern / eckige Klammern fehlen.

Einige Felder erscheinen nach der Zusammenführung nicht

Ursache: Unter Shallow / Array Replace-Strategie werden gleichnamige Schlüssel durch die spätere Eingabe vollständig überschrieben; unter Deep Merge überschreiben null-wertige Felder auch das vorherige Objekt. Lösung: Wechseln Sie die Strategie zu 'Deep Merge', um Ebene für Ebene zu prüfen; wenn bestätigt, dass es ein späteres null-Überschreiben ist, entfernen Sie das null-Feld aus dem späteren JSON oder ersetzen Sie es durch einen Platzhalterwert.

Array wurde ersetzt statt verkettet

Ursache: Die aktuelle Strategie ist 'Shallow Merge' oder 'Array Replace'. Lösung: Wechseln Sie im Dropdown der Toolbar zu 'Array Concat'; oder kombinieren Sie die beiden Arrays manuell zu einem, bevor Sie zusammenführen.

Objekt wurde nach Deep Merge zu Array (oder umgekehrt)

Ursache: Die beiden JSONs haben inkonsistente Typen am selben Pfad ('Objekt vs Array'); Deep Merge folgt 'letzte Eingabe gewinnt', wenn Typen abweichen. Lösung: Vereinheitlichen Sie die Typen auf beiden Seiten (beide als Objekt oder beide als Array), oder wechseln Sie zur Shallow / Array Replace-Strategie, um die Semantik explizit zu machen.

Schlüsselreihenfolge ist nach der Zusammenführung durcheinander

Ursache: Die neuen Schlüssel des zweiten JSON werden nach Einfügeposition nach dem ersten JSON angehängt; Browser/Parser sortieren reine Integer-Schlüssel automatisch numerisch. Lösung: Führen Sie zuerst alle Eingabe-JSONs durch das JSON-Sort-Tool, um die Schlüsselnamen-Reihenfolge zu vereinheitlichen, dann zusammenführen; oder sortieren Sie vor der Verwendung des Ergebnisses erneut.

Große Dateien (10 MB+) lassen die Zusammenführung einfrieren

Ursache: Das gleichzeitige Parsen vieler großer Texte mit JSON.parse verbraucht viel Speicher. Lösung: Halten Sie jede Eingabe innerhalb von 1-2 MB; für riesige Dateien verwenden Sie Node.js (lodash.merge) oder Python (mergedeep) Skripte lokal; verwenden Sie dieses Tool danach für eine kleine Überprüfung.

Glossar

JSON Merge
Operation, zwei oder mehr JSON-Objekte nach angegebenen Regeln zu einem neuen zu kombinieren. Die zentrale Herausforderung ist die Strategie zur Lösung von Schlüsselnamen-Konflikten.
Deep Merge
Strategie, die rekursiv in verschachtelte Objekte geht und an jedem Blattknoten zusammenführt; rekursiert nur, wenn beide Seiten gewöhnliche Objekte sind, sonst Fallback auf Überschreiben.
Shallow Merge
Strategie, die nur Top-Level-Schlüssel zusammenführt und gleichnamige Schlüssel vollständig ersetzt; entspricht in JS `Object.assign({}, a, b)`.
Array Concat
Eine der Array-Zusammenführungsstrategien: kombiniert mehrere Arrays zu einem langen Array, wobei alle Elemente in der Reihenfolge erhalten bleiben; häufig verwendet für API-Antwort-Aggregation.
Array Replace
Eine der Array-Zusammenführungsstrategien: gleichnamige Arrays werden vollständig durch die spätere Eingabe ersetzt; häufig verwendet für Config-Override.
Object.assign
In JavaScript eingebaute Methode, die alle aufzählbaren eigenen Eigenschaften von einem oder mehreren Quellobjekten flach in ein Zielobjekt kopiert; die De-facto-Standardimplementierung der flachen Zusammenführung.
lodash.merge
Deep-Merge-Funktion der Lodash-Bibliothek; die häufigste Deep-Merge-Implementierung im Node.js-Ökosystem; Arrays werden verkettet, nicht überschrieben.
mergedeep (Python)
Deep-Merge-Bibliothek im Python-Ökosystem (pip install mergedeep); unterstützt einen strategy-Parameter zur Steuerung des Array-Concat-vs-Replace-Verhaltens.
jq -s 'add'
jq-Befehl, der mehrere JSON-Arrays zu einem addiert; das Zusammenführen mehrerer JSON-Objekte erfordert `reduce .[] as $item ({}; . * $item)`.
BFF (Backend for Frontend)
Aggregationsschicht in der Microservice-Architektur zwischen Frontend und Backend-Diensten; muss oft JSON-Antworten von mehreren Diensten zu einer einheitlichen Antwort zusammenführen - ein klassisches JSON-Merge-Szenario.

4 JSON-Zusammenführungsstrategien im Vergleich

StrategieUmfangArray-BehandlungTypisches Szenario
Deep MergeRekursiv alle verschachtelten EbenenNach ausgewähltem arrayConcat/arrayReplaceMulti-Env-Config-Schichtung, i18n-Wörterbuch-Zusammenführung
Shallow MergeNur Top-Level zusammenführenVollständig überschreibenEinfacher Object.assign-Stil-Ersatz
Array ConcatTop-LevelZu neuem Array verkettetPaginierte API-Aggregation, Mock-Daten-Zusammenführung
Array ReplaceTop-LevelLetzte Eingabe gewinntFeature-Flag-Config-Override

Häufige JSON-Zusammenführungs-Implementierungen im Vergleich

Implementierung / BibliothekSpracheStandardverhaltenHinweise
Object.assignJavaScriptShallow MergeES2015 Standard-Lib; nach ES2017 können Sie `Object.assign({}, a, b)` verwenden
{ ...a, ...b }JavaScriptShallow MergeSpread-Operator; prägnantere Syntax
lodash.mergeJavaScriptDeep MergeArrays werden verkettet (kein Überschreiben); npm install lodash.merge
mergedeepPythonDeep Mergestrategy='override' ändert Array-Concat zu Replace
deepmerge (Python)PythonDeep MergeEine andere beliebte Implementierung; pip install deepmerge
jq -s 'add'ShellArray-SummeObjekt-Zusammenführung benötigt `reduce .[] as $i ({}; . * $i)`

Authoritative References