JSON samenvoegen
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
- Plak 2 tot N samen te voegen JSON-segmenten in de linker invoervelden (standaard 2), of klik '+' om meer invoer toe te voegen
- Selecteer een samenvoegingsstrategie uit de werkbalk-dropdown: Deep Merge / Shallow Merge / Array Concat / Array Replace
- 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
- 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' toeMulti-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.jsonVeelgestelde 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
| Strategie | Bereik | Array-behandeling | Typisch scenario |
|---|---|---|---|
| Deep Merge | Recursief alle geneste niveaus | Volgens geselecteerde arrayConcat/arrayReplace | Multi-omgeving config-lagen, i18n-woordenboek-samenvoeging |
| Shallow Merge | Voegt alleen topniveau samen | Volledige vervanging | Eenvoudige Object.assign-stijl vervanging |
| Array Concat | Topniveau | Aaneengeschakeld tot nieuwe array | Paginatie API-aggregatie, mock data-samenvoeging |
| Array Replace | Topniveau | Laatste invoer wint | Feature Flag config-override |
Veelvoorkomende JSON Samenvoegingsimplementaties Vergeleken
| Implementatie / bibliotheek | Taal | Standaardgedrag | Opmerkingen |
|---|---|---|---|
| Object.assign | JavaScript | Ondiepe samenvoeging | ES2015 standaard lib; na ES2017 kunt u `Object.assign({}, a, b)` gebruiken |
| { ...a, ...b } | JavaScript | Ondiepe samenvoeging | Spread-operator; beknoptere syntaxis |
| lodash.merge | JavaScript | Diepe samenvoeging | Arrays aaneengeschakeld (geen vervanging); npm install lodash.merge |
| mergedeep | Python | Diepe samenvoeging | strategy='override' om array-concat naar vervanging te wijzigen |
| deepmerge (Python) | Python | Diepe samenvoeging | Een andere populaire implementatie; pip install deepmerge |
| jq -s 'add' | Shell | Array-som | Object-samenvoeging vereist `reduce .[] as $i ({}; . * $i)` |
Authoritative References
- JSON Compress
- CSV naar JSON Converter
- JSON naar CSV
- JSON Diff
- JSON Escape / Unescape
- JSON afvlakken
- JSON Formatter
- JSON-generator
- JSONPath Online Query
- JSON samenvoegen
- JSON repareren
- JSON Schema Validator
- JSON sorteren
- JSON Stringify
- JSON naar HTML-tabel
- JSON naar Java
- JSON to Markdown
- JSON naar SQL
- JSON naar TOML
- JSON naar TypeScript
- XML naar JSON
- JSON naar XML
- YAML naar JSON
- JSON naar YAML
- JSON naar Python
- JSON naar Go
- JSON naar Rust
- JSON naar Swift
- JSON naar C#
- JSON naar C++
- JSON naar PHP