JSON samenvoegen

#1Invoer
#2Invoer

Gratis online tool om JSON samen te voegen. Met één klik meerdere JSON-objecten samenvoegen volgens een gekozen strategie (Diep / Ondiep / Array Concat / Array Vervangen) met 4 modi voor conflictoplossing. Ideaal voor multi-bron aggregatie, config-lagen en i18n-consolidatie.

Gerelateerde aanbevelingen

Wat is JSON samenvoegen (JSON Merge)?

JSON samenvoegen (JSON Merge) is de bewerking waarbij twee of meer JSON-objecten volgens bepaalde regels tot één nieuw object worden gecombineerd. Het komt in engineering buitengewoon vaak voor: ① JSON van meerdere microservices samenvoegen tot één uniforme respons (BFF-laag-aggregatie); ② base / env / gebruikersconfig volgens 'omgeving-overschrijf'-logica combineren tot de definitieve config (Node.js config, Viper, Spring Cloud Config); ③ meerdere i18n-vertalingsbestanden samenvoegen, overschrijven en aanvullen tot een volledig woordenboek; ④ meerdere mock-data-arrays combineren tot volledige testdata; ⑤ meerdere API-paginatie-responses samenvoegen tot een volledige dataset.

Het lastige is niet het 'samenvoegen', maar 'hoe om te gaan met conflicten'. Er zijn 4 gangbare strategieën voor conflictoplossing: ① **Deep Merge**: Recursief in geneste objecten, waarbij elke sleutel individueel wordt samengevoegd en alleen bij bladknooppuntconflicten wordt overschreven - ideaal voor config-lagen. ② **Shallow Merge**: Voegt alleen sleutels op het topniveau samen, waarbij sleutels met dezelfde naam volledig worden vervangen - eenvoudigste semantiek, vergelijkbaar met `Object.assign`. ③ **Array Concat**: Voegt arraywaarden aaneen tot één lange array met behoud van alle elementvolgorde - ideaal voor API-aggregatie. ④ **Array Replace**: Vervangt arraywaarden volledig door de latere invoer - ideaal voor config-override.

Op implementatieniveau gebruikt deep merge doorgaans stapelgebaseerde recursie: controleer eerst dat beide kanten gewone objecten zijn (geen arrays, geen null), verwerk dan elke sleutel recursief; bij type-inconsistentie (bijv. dezelfde naam is aan de ene kant een object, aan de andere kant een array), wordt over het algemeen de regel 'laatste invoer wint' gevolgd zonder typeconversie. De JSON Samenvoegen-tool van GeekFormat bevat de bovenstaande 4 strategieën en stelt u in staat direct op de pagina te schakelen; u kunt 2 tot N JSON-segmenten tegelijk plakken, automatisch in volgorde samenvoegen, en een uniform geformatteerd resultaat produceren. Het hele samenvoegproces vindt lokaal in de browser plaats, originele gegevens worden niet geüpload.

Toepassingsgevallen

  • Voeg meerdere microservice API-responses samen tot één uniforme JSON-structuur voor de frontend
  • Voeg base / dev / prod gelaagde configuratiebestanden samen tot de definitieve config via omgeving-override
  • Voeg meerdere i18n-vertalingsbestanden per taal samen, ontdubbel en vul aan tot een volledig woordenboek
  • Combineer meerdere mock-data-arrays of paginatie API-responses tot een volledige dataset
  • Frontend-component die standaardconfig + gebruikersaanpassing + remote A/B-experimentconfig samenvoegt
  • Tijdens gegevensmigratie meerdere bron-systemen JSON-exports samenvoegen tot een uniform downstream-formaat

Hoe te gebruiken

  1. Plak 2 tot N samen te voegen JSON-segmenten in de linker invoervelden (standaard 2), of klik '+' om meer invoer toe te voegen
  2. Selecteer een samenvoegingsstrategie uit de werkbalk-dropdown: Deep Merge / Shallow Merge / Array Concat / Array Replace
  3. Klik op de knop 'Samenvoegen'; het rechter uitvoerveld toont het geformatteerde resultaat. Als de invoer syntaxfouten bevat, worden het specifieke regelnummer en de foutmelding getoond
  4. Na bevestiging van het resultaat, klik op 'Kopiëren' om de samengevoegde output op het klembord te plaatsen, of op 'Downloaden' om op te slaan als merged.json voor verdere formattering, Schema-validatie, etc.

Functies

  • 4 samenvoegingsstrategieën: Deep Merge / Shallow Merge / Array Concat / Array Replace, met één klik schakelbaar voor verschillende bedrijfsscenario's
  • Ondersteunt 2 tot N JSON-segmenten: standaard 2 invoervelden, klik '+' om dynamisch meer bron-JSONs toe te voegen, flexibel voor multi-bron aggregatie
  • Diepe recursieve samenvoeging: verwerkt intelligent meerlagige geneste objecten, lost bladconflicten op volgens de gespecificeerde strategie, met behoud van alle geldige velden
  • Flexibele conflictoplossing: topniveau-conflicten volgen de geselecteerde strategie; geneste objectconflicten gaan diep; arrayconflicten worden onderscheiden via arrayConcat/arrayReplace
  • Uniform geformatteerde output: resultaten worden weergegeven met 2 spaties inspringing voor eenvoudige menselijke review en directe kopie naar downstream-tools
  • Realtime uitvoering: klik 'Samenvoegen' direct na het plakken voor resultaten; fouten tonen specifieke JSON-regelnummers en foutmeldingen
  • Lokale verwerking voor privacy: parsen, samenvoegen en formattering vinden allemaal lokaal in de browser plaats, geen invoer naar een server gestuurd
  • Naadloze downstream-overgang: resultaten kunnen met één klik worden gekopieerd naar JSON Formatter, Schema Validator, codegeneratoren, etc.

Codevoorbeelden

Diepe samenvoeging in JavaScript met 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'] };

// Diepe samenvoeging: geneste objecten worden recursief samengevoegd, bladknooppunten nemen de latere waarde
const deep = merge({}, a, b);
console.log(deep);
// => { user: { name: 'Alice', age: 29, email: 'a@x.com' }, tags: ['admin', 'editor'] }

// Ondiepe samenvoeging: sleutels op topniveau worden volledig vervangen, zonder afdaling in nesting
const shallow = Object.assign({}, a, b);
console.log(shallow);
// => { user: { email: 'a@x.com', age: 29 }, tags: ['editor'] }

Diepe samenvoeging in Python met 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"]}

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

# Opmerking: mergedeep voegt standaard arrays samen; string/nummer overschrijft.
# Voor array-vervanging voegt u strategy='override' toe

Multi-JSON-samenvoeging in CLI met jq -s

bash
# Voeg meerdere JSON-arrays samen tot één lange array
jq -s 'add' a.json b.json c.json

# Voeg meerdere JSON-objecten recursief samen (jq 1.6+)
jq -s 'reduce .[] as $item ({}; . * $item)' a.json b.json

# Ondiepe samenvoeging: leg b's topniveau-sleutels over a
jq -s '.[0] * .[1]' a.json b.json

# Voeg arrays samen en behoud alleen ontdubbelde id-velden
jq -s '[.[].items[]] | unique_by(.id)' a.json b.json

Veelgestelde vragen

Zijn JSON Samenvoegen en JSON Concatenatie hetzelfde?

Niet precies. 'Concatenatie' betekent meestal het direct aan elkaar plakken van strings zonder structuur; 'samenvoegen' betekent het recursief combineren van meerdere objecten via JSON-structuur en het afhandelen van sleutelnaamconflicten. Deze tool verwijst naar de laatste - gestructureerde JSON-samenvoeging.

Hoe kies ik tussen Deep Merge en Shallow Merge?

Shallow Merge: verwerkt alleen sleutels op het topniveau, sleutels met dezelfde naam worden volledig vervangen, vergelijkbaar met `Object.assign` - het eenvoudigst. Deep Merge: recursief in geneste objecten, op elk bladknooppunt samenvoegen - slimmer. Als uw meerdere JSON's velden toevoegen op verschillende subpaden (bijv. base.user.name en override.user.email), gebruik dan deep merge. Als u een heel subobject in één keer wilt vervangen, gebruik dan shallow merge.

Bij het samenvoegen van arrays, is het op volgorde of op index?

Standaard volgt deze tool de 'concat'-semantiek: het combineert meerdere arrays tot één lange array met behoud van alle elementvolgorde. Als uw twee arrays dezelfde lengte hebben en u index-voor-index vervanging wilt, schakel dan over naar 'arrayReplace' en wikkel de array handmatig eerst in een objectstructuur.

Hoe wordt de conflictwinnaar beslist wanneer sleutelnamen botsen?

Beslist door invoervolgorde: de latere JSON overschrijft eerdere sleutels met dezelfde naam (volledige vervanging onder Shallow / Array Replace strategieën, alleen bladvervanging onder Deep Merge). Als u 'eerste invoer wint' wilt, draai dan de invoervolgorde om.

Kan het JSON-arrays samenvoegen?

Ja. Twee typische scenario's: ① Meerdere JSON's zijn allemaal arrays → gebruik 'arrayConcat' om samen te voegen tot één lange array; ② Meerdere JSON's zijn objecten, maar één veld is een array → gebruik 'arrayConcat' om de arrays samen te voegen, of 'arrayReplace' om de waarde van de latere invoer te behouden.

Kan het meer dan 2 JSON's tegelijk samenvoegen?

Ja. Standaard zijn er 2 invoervelden; klik '+' om er dynamisch meer toe te voegen. Alle invoer wordt van boven naar beneden in volgorde samengevoegd. In theorie onbeperkt, maar het browsergheugen beperkt de grootte van een enkel segment.

Hoe wordt de sleutelvolgorde bepaald na het samenvoegen?

Deep Merge: de sleutelvolgorde van de eerste JSON heeft prioriteit; nieuwe sleutels van latere JSON's worden toegevoegd aan het einde van het overeenkomstige niveau. Shallow Merge: op invoervolgorde - alle sleutels van de eerste JSON verschijnen eerst, nieuwe sleutels van latere JSON's worden op het topniveau toegevoegd; sleutels met dezelfde naam behouden de volgorde van de eerste ongewijzigd.

Wijzigt de tool veldtypen?

Nee, het wijzigt niet actief typen. Als onder Shallow / Array Replace strategie de sleutels met dezelfde naam in twee JSON's van verschillende typen zijn (een object, een array), volgt het 'laatste invoer wint' en wordt direct overschreven, zonder typeconversie. Deep Merge recursief alleen wanneer beide kanten gewone objecten zijn; in alle andere gevallen wordt overschreven.

Worden null-waarden behouden?

Ja. null is een geldige JSON-waarde; deze tool behandelt null als een normale bladwaarde: onder Shallow / Array Replace overschrijft een latere null de eerdere waarde; onder Deep Merge wordt een null behandeld door de overschrijfregel en niet speciaal overgeslagen.

Geeft de samenvoeging statistieken uit?

Ja. Het resultatengebied toont het aantal JSON-segmenten en het totale aantal sleutels, voor snelle verificatie; zie de geformatteerde output aan de rechterkant voor de volledige veldenlijst.

Uploadt de tool mijn JSON naar een server?

Nee. Parsen, samenvoegen en formattering vinden allemaal lokaal in de browser plaats, invoer en tussenresultaten worden niet naar een server gestuurd. Werkt offline, geschikt voor gevoelige multi-bron JSON (bijv. productieomgeving-configs, interne API-responses).

Wat is de beste volgorde van gebruik met JSON Formatter en Schema Validator?

Aanbevolen keten: ① JSON repareren (ongeldige JSON opschonen) → ② Deze JSON Samenvoegen-tool (multi-bron samenvoeging) → ③ JSON formatteren (inspringing verenigen) → ④ JSON Schema-validatie (definitieve structuur verifiëren) → ⑤ Codegeneratie (TypeScript / Java / Go etc.). Kies de stappen die u nodig heeft.

Probleemoplossing

Samenvoeging toont 'Unexpected token' of 'Invalid JSON'

Oorzaak: ten minste één invoerveld bevat ongeldige JSON. Oplossing: plak eerst de falende JSON in de JSON Repair-tool om het op te schonen (verwerkt automatisch achterste komma's, enkele aanhalingstekens, sleutels zonder aanhalingstekens, etc.), ga dan terug naar deze tool; of controleer of u buitenste accolades / vierkante haken hebt gemist.

Sommige velden verschijnen niet na het samenvoegen

Oorzaak: onder Shallow / Array Replace strategie worden sleutels met dezelfde naam volledig overschreven door latere invoer; onder Deep Merge overschrijven velden met null-waarde ook het voorgaande object. Oplossing: schakel de strategie naar 'Deep Merge' om laag voor laag te controleren; als bevestigd is dat het een latere null-vervanging is, verwijder dan het null-veld uit de latere JSON of vervang het door een placeholder-waarde.

Array werd vervangen in plaats van aaneengeschakeld

Oorzaak: de huidige strategie is 'Shallow Merge' of 'Array Replace'. Oplossing: schakel in de werkbalk-dropdown naar 'Array Concat'; of combineer de twee arrays handmatig tot één voordat u ze samenvoegt.

Object werd een array (of vice versa) na Deep Merge

Oorzaak: de twee JSON's hebben inconsistente typen op hetzelfde pad ('object vs array'); Deep Merge volgt 'laatste invoer wint' wanneer typen verschillen. Oplossing: verenig de typen aan beide kanten (beide als object of beide als array), of schakel naar Shallow / Array Replace strategie om de semantiek expliciet te maken.

Sleutelvolgorde is in de war na samenvoeging

Oorzaak: de nieuwe sleutels van de tweede JSON worden op invoegpositie na de eerste JSON toegevoegd; browsers/parsers sorteren pure integer-sleutels automatisch numeriek. Oplossing: voer eerst alle invoer-JSONs door de JSON Sort-tool om de sleutelnaamvolgorde te verenigen, voeg ze vervolgens samen; of sorteer opnieuw voordat u het resultaat gebruikt.

Grote bestanden (10 MB+) laten de samenvoeging bevriezen

Oorzaak: het in één keer parsen van veel grote teksten met JSON.parse kost veel geheugen. Oplossing: houd elke invoer binnen 1-2 MB; gebruik voor enorme bestanden Node.js (lodash.merge) of Python (mergedeep) scripts lokaal; gebruik deze tool daarna voor kleine verificatie.

Woordenlijst

JSON Merge
Bewerking waarbij twee of meer JSON-objecten volgens gespecificeerde regels tot één nieuw object worden gecombineerd. De centrale uitdaging is de strategie voor het oplossen van sleutelnaamconflicten.
Deep Merge
Strategie die recursief in geneste objecten gaat en op elk bladknooppunt samenvoegt; recursief alleen wanneer beide kanten gewone objecten zijn, anders valt het terug op overschrijven.
Shallow Merge
Strategie die alleen sleutels op het topniveau samenvoegt en sleutels met dezelfde naam volledig vervangt; equivalent in JS aan `Object.assign({}, a, b)`.
Array Concat
Een van de array-samenvoegingsstrategieën: combineert meerdere arrays tot één lange array met behoud van alle elementvolgorde; vaak gebruikt voor API-respons-aggregatie.
Array Replace
Een van de array-samenvoegingsstrategieën: arrays met dezelfde naam worden volledig vervangen door de latere invoer; vaak gebruikt voor config-override.
Object.assign
Ingebouwde JavaScript-methode die alle opsombare eigen eigenschappen van een of meer bronobjecten ondiep kopieert naar een doelobject; de feitelijke standaardimplementatie van ondiepe samenvoeging.
lodash.merge
Deep merge-functie geleverd door de Lodash-bibliotheek; de meest gebruikte deep merge-implementatie in het Node.js-ecosysteem; arrays worden aaneengeschakeld, niet overschreven.
mergedeep (Python)
Deep merge-bibliotheek in het Python-ecosysteem (pip install mergedeep); ondersteunt een strategy-parameter om array-concat vs vervangingsgedrag te regelen.
jq -s 'add'
jq-commando dat meerdere JSON-arrays tot één optelt; meerdere JSON-objecten samenvoegen vereist `reduce .[] as $item ({}; . * $item)`.
BFF (Backend for Frontend)
Aggregatielaag in microservice-architectuur tussen frontend en backend-services; moet vaak JSON-responses van meerdere services samenvoegen tot één uniforme respons - een klassiek JSON-merge-scenario.

4 JSON Samenvoegingsstrategieën Vergeleken

StrategieBereikArray-behandelingTypisch scenario
Deep MergeRecursief alle geneste niveausVolgens geselecteerde arrayConcat/arrayReplaceMulti-omgeving config-lagen, i18n-woordenboek-samenvoeging
Shallow MergeVoegt alleen topniveau samenVolledige vervangingEenvoudige Object.assign-stijl vervanging
Array ConcatTopniveauAaneengeschakeld tot nieuwe arrayPaginatie API-aggregatie, mock data-samenvoeging
Array ReplaceTopniveauLaatste invoer wintFeature Flag config-override

Veelvoorkomende JSON Samenvoegingsimplementaties Vergeleken

Implementatie / bibliotheekTaalStandaardgedragOpmerkingen
Object.assignJavaScriptOndiepe samenvoegingES2015 standaard lib; na ES2017 kunt u `Object.assign({}, a, b)` gebruiken
{ ...a, ...b }JavaScriptOndiepe samenvoegingSpread-operator; beknoptere syntaxis
lodash.mergeJavaScriptDiepe samenvoegingArrays aaneengeschakeld (geen vervanging); npm install lodash.merge
mergedeepPythonDiepe samenvoegingstrategy='override' om array-concat naar vervanging te wijzigen
deepmerge (Python)PythonDiepe samenvoegingEen andere populaire implementatie; pip install deepmerge
jq -s 'add'ShellArray-somObject-samenvoeging vereist `reduce .[] as $i ({}; . * $i)`

Authoritative References