JSON Birleştir
Ücretsiz online JSON birleştirme aracı. Birden fazla JSON nesnesini belirlenen stratejiye göre (deep merge / sığ birleştirme / dizi birleştirme / dizi değiştirme) tek tıkla tek bir nesnede birleştirir. 4 farklı çakışma çözüm modu sunar; çoklu kaynak veri agregasyonu, konfigürasyon katmanlama ve i18n birleştirme senaryoları için idealdir.
İlgili Öneriler
JSON Merge (JSON Birleştirme) Nedir?
JSON Merge (JSON birleştirme), iki veya daha fazla JSON nesnesini belirli kurallara göre tek bir yeni nesnede birleştirme işlemidir. Yazılım geliştirmede çok sık karşılaşılır: ① Birden fazla mikroservisten dönen JSON yanıtlarını tek bir birleşik yanıtta toplamak (BFF katmanı agregasyonu); ② base konfigürasyon, env konfigürasyonu ve kullanıcı konfigürasyonunu "ortam üzerine yazma" mantığıyla nihai konfigürasyonda birleştirmek (Node.js config, Viper, Spring Cloud Config); ③ Birden fazla i18n çeviri dosyasını birleştirip üzerine yazarak ve eksikleri tamamlayarak tam bir sözlük oluşturmak; ④ Birden fazla mock veri dizisini birleştirip eksiksiz test verisi elde etmek; ⑤ Birden fazla sayfalı API yanıtını birleştirip tam veri seti elde etmek.
Birleştirmenin zor noktası "bir araya getirmek" değil, "çakışmaların nasıl ele alınacağıdır." Yaygın 4 çakışma çözüm stratejisi vardır: ① **Deep Merge (Derin Birleştirme)**: İç içe nesnelerin içine özyinelemeli olarak girer, her anahtarı ayrı ayrı birleştirir, yalnızca yaprak düğümlerde çakışma olduğunda üzerine yazar; konfigürasyon katmanlama için uygundur. ② **Shallow Merge (Sığ Birleştirme)**: Yalnızca üst düzey anahtarları birleştirir, aynı isimli anahtarları tümüyle üzerine yazar; en basit semantiktir, `Object.assign` benzeri davranır. ③ **Array Concat (Dizi Birleştirme)**: Dizi türündeki değerleri tüm öğelerin sırasını koruyarak tek bir uzun dizide birleştirir; API agregasyonu için uygundur. ④ **Array Replace (Dizi Değiştirme)**: Dizi türündeki değerlerde son girdiyi esas alır ve doğrudan üzerine yazar; konfigürasyon üzerine yazma için uygundur.
Uygulama seviyesinde, deep merge genellikle yığın tabanlı özyineleme kullanır: önce her iki tarafın da düz nesne olup olmadığı kontrol edilir (dizi veya null değilse), ardından her anahtar için özyinelemeli işlem yapılır; tür uyuşmazlığı durumunda (aynı isimli anahtarın bir tarafı nesne, diğer tarafı dizi ise), genellikle "son girdi esas alınır" ve tür dönüşümü yapılmaz. GeekFormat'ın JSON birleştirme aracı yukarıdaki 4 stratejiyi yerleşik olarak sunar ve sayfada doğrudan geçiş yapılabilir; 2'den N'e kadar JSON parçasını tek seferde yapıştırabilir, otomatik olarak sırayla birleştirir ve biçimlendirilmiş tek bir sonuç çıktısı verir. Tüm birleştirme süreci tarayıcıda yerel olarak gerçekleşir, ham veriler hiçbir sunucuya yüklenmez.
Kullanım senaryoları
- Birden fazla mikroservis API yanıtını ön uçta kullanılmak üzere tek bir birleşik JSON yapısında birleştirme
- Base / dev / prod çok katmanlı konfigürasyon dosyalarını toplayıp ortama göre üzerine yazarak nihai konfigürasyonu oluşturma
- Birden fazla i18n çeviri dosyasını dile göre birleştirip, tekrarları kaldırıp eksikleri tamamlayarak tam bir sözlük oluşturma
- Birden fazla mock veri dizisini veya sayfalı API yanıtını birleştirip eksiksiz veri seti elde etme
- Ön uç bileşenlerinde varsayılan konfigürasyon + kullanıcı özelleştirmesi + uzak A/B test konfigürasyonunu birleştirme
- Veri taşımada birden fazla kaynak sistemin JSON dışa aktarma dosyalarını birleştirip alt sistemler için tek bir formatta birleştirme
Nasıl Kullanılır
- Birleştirmek istediğiniz 2 ila N kadar JSON parçasını sırayla sol giriş kutularına yapıştırın (varsayılan 2 adettir), veya「+」ya tıklayarak daha fazla giriş ekleyin
- Araç çubuğu açılır menüsünden birleştirme stratejisini seçin: Deep Merge (Derin) / Shallow Merge (Sığ) / Array Concat (Dizi Birleştirme) / Array Replace (Dizi Değiştirme)
- 「Birleştir」butonuna tıklayın, sağdaki çıkış kutusunda birleştirilmiş ve biçimlendirilmiş sonuç görüntülenecektir; girişlerde sözdizimi hatası varsa belirli satır numarası ve hata mesajı gösterilir
- Sonucun doğruluğunu onayladıktan sonra「Kopyala」ya tıklayarak birleştirme sonucunu panoya kopyalayın veya「İndir」e tıklayarak merged.json dosyası olarak kaydedin; ardından biçimlendirme, Schema doğrulama gibi işlemlere devam edebilirsiniz
Özellikler
- 4 birleştirme stratejisi: Deep Merge / Shallow Merge / Array Concat / Array Replace, tek tıkla geçiş yaparak farklı iş senaryolarına uyum sağlar
- 2'den N'e kadar JSON desteği: varsayılan olarak 2 giriş kutusu,「+」butonuna tıklayarak dinamik olarak daha fazla kaynak JSON eklenebilir, çoklu kaynak agregasyonuna esnek şekilde uyum sağlar
- Özyinelemeli derin birleştirme: çok katmanlı iç içe nesneleri akıllıca işler, yaprak düğüm çakışmalarını belirlenen stratejiye göre çözer, tüm geçerli alanları korur
- Esnek çakışma çözümü: üst düzey çakışmalarda seçilen strateji uygulanır; iç içe nesne çakışmalarında derin birleştirmeye girilir; dizi çakışmalarında arrayConcat/arrayReplace ayrı ayrı ele alınır
- Birleşik biçimlendirilmiş çıktı: birleştirme sonucu 2 boşluk girintisiyle görüntülenir, manuel inceleme ve alt araçlara doğrudan kopyalama için uygundur
- Gerçek zamanlı birleştirme: yapıştırdıktan sonra「Birleştir」e tıklamanız yeterli, anında sonuç; hata durumunda belirli JSON satır numarası ve hata mesajı gösterilir
- Gizlilik koruması için yerel işleme: ayrıştırma, birleştirme ve biçimlendirme tamamen tarayıcıda yerel olarak gerçekleşir, giriş içeriği hiçbir sunucuya gönderilmez
- Alt araçlarla sorunsuz entegrasyon: birleştirme sonucu tek tıkla JSON biçimlendirici, Schema doğrulayıcı, kod üretici gibi araçlara kopyalanarak işlemeye devam edilebilir
Kod Örnekleri
JavaScript'te lodash merge ile derin birleştirme
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: iç içe nesneler özyinelemeli birleştirilir, son girdi yaprak düğümlerde üzerine yazar
const deep = merge({}, a, b);
console.log(deep);
// => { user: { name: 'Alice', age: 29, email: 'a@x.com' }, tags: ['admin', 'editor'] }
// Shallow merge: yalnızca üst düzey anahtarlar üzerine yazılır, iç içe yapılara girilmez
const shallow = Object.assign({}, a, b);
console.log(shallow);
// => { user: { email: 'a@x.com', age: 29 }, tags: ['editor'] }Python'da mergedeep ile derin birleştirme
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"]}
# Derin birleştirme
result = merge(a, b)
print(result)
# => {'user': {'name': 'Alice', 'age': 29, 'email': 'a@x.com'}, 'tags': ['admin', 'editor']}
# Not: mergedeep varsayılan olarak dizileri birleştirir, string/sayıları üzerine yazar
# Dizilerin üzerine yazılması için strategy='override' ekleyinKomut satırında jq -s ile birden fazla JSON birleştirme
bash# Birden fazla JSON dizisini tek bir uzun dizide birleştirme
jq -s 'add' a.json b.json c.json
# Birden fazla JSON nesnesini özyinelemeli birleştirme (jq 1.6+)
jq -s 'reduce .[] as $item ({}; . * $item)' a.json b.json
# Shallow merge: b'nin üst düzey anahtarlarını a'nın üzerine yazma
jq -s '.[0] * .[1]' a.json b.json
# Dizileri birleştirip yalnızca benzersiz id alanını koruma
jq -s '[.[].items[]] | unique_by(.id)' a.json b.jsonSık Sorulan Sorular
JSON birleştirme ile JSON birleştirme (concat) aynı şey midir?
Tam olarak aynı değildir. "Concat/birleştirme" genellikle dizilerin doğrudan uç uca eklenmesini ifade eder, yapısal değildir; "merge/birleştirme" ise JSON yapısına göre özyinelemeli olarak birden fazla nesneyi tek bir nesnede birleştirmeyi ifade eder ve anahtar çakışmalarını ele alır. Bu araç ikincisini, yani yapısal JSON birleştirmeyi ifade eder.
Deep merge ve shallow merge arasında nasıl seçim yapmalıyım?
Shallow merge (sığ birleştirme): yalnızca üst düzey anahtarları işler, aynı isimli anahtarları tümüyle değiştirir, `Object.assign` benzeri, en basit ve doğrudan yöntemdir. Deep merge (derin birleştirme): iç içe nesnelerin içine özyinelemeli olarak girer, her yaprak düğümü ayrı ayrı birleştirir, daha akıllıdır. Birden fazla JSON'unuz farklı alt yollarda alanlar ekliyorsa (örneğin base.user.name ile override.user.email gibi), deep merge kullanın; tüm alt nesneyi tek seferde değiştirmek istiyorsanız shallow merge kullanın.
Diziler birleştirilirken sıraya göre mi yoksa indekse göre mi işlenir?
Bu araç varsayılan olarak "concat" semantiğini kullanır: birden fazla diziyi tüm öğelerin sırasını koruyarak tek bir uzun dizide birleştirir. İki diziniz aynı uzunluktaysa ve indeks bazında öğe öğe üzerine yazmak istiyorsanız, "arrayReplace" stratejisine geçin ve diziyi manuel olarak bir nesne yapısıyla sarın.
Anahtar çakışmalarında kimin üzerine yazacağına nasıl karar verilir?
Giriş sırasına göre karar verilir: sonraki JSON, önceki aynı isimli anahtarın üzerine yazar (shallow/array replace stratejisinde tümüyle üzerine yazar, deep merge'de yalnızca yaprak düğümleri üzerine yazar). "Önce girdi önceliği" istiyorsanız, giriş sırasını tersine çevirmeniz yeterlidir.
JSON dizilerini birleştirme destekleniyor mu?
Evet. İki tipik senaryo: ① Birden fazla JSON'un hepsi diziyse → "arrayConcat" ile tek bir uzun dizide birleştirin; ② Birden fazla JSON'un hepsi nesneyse ve içlerinden bir alan diziyse → "arrayConcat" ile birden fazla diziyi birleştirin veya "arrayReplace" ile son girdiyi esas alın.
Aynı anda 2'den fazla JSON birleştirebilir miyim?
Evet. Varsayılan olarak 2 giriş kutusu sunulur,「+」butonuna tıklayarak dinamik olarak daha fazla giriş ekleyebilirsiniz; tüm girişler yukarıdan aşağıya sırayla birleştirilir. Teorik olarak sayı sınırı yoktur, ancak tarayıcı belleği tek parça boyutunu sınırlayacaktır.
Birleştirme sonrası anahtar sırası nasıl belirlenir?
Deep merge: ilk JSON'un anahtar sırası önceliklidir, ikinci JSON'un yeni anahtarları ilgili seviyenin sonuna eklenir. Shallow merge: giriş sırasına göre, ilk JSON'un tüm anahtarları önce görünür, sonraki JSON'ların yeni anahtarları üste eklenir; aynı isimli anahtarlar ilk JSON'un sırasını korur.
Araç alan türlerini değiştirir mi?
Türleri aktif olarak değiştirmez. Shallow/array replace stratejisinde iki JSON'un aynı isimli anahtarından biri nesne diğeri diziyse, "son girdi esas alınır" ve doğrudan üzerine yazar, tür dönüşümü yapılmaz. Deep merge yalnızca "her iki taraf da düz nesneyse" özyineleme yapar, diğer durumlarda üzerine yazma uygulanır.
null değerleri korunur mu?
Evet. null JSON'da geçerli bir değerdir, bu araç null'u normal bir yaprak değer olarak işler: shallow/array replace'de son girdideki null önceki değerin üzerine yazar; deep merge'de null ile karşılaşıldığında üzerine yazma kuralı uygulanır, özel olarak atlanmaz.
Birleştirme sonrası istatistik bilgisi çıktısı veriyor mu?
Evet. Sonuç alanında birleştirmeye katılan JSON parça sayısı ve toplam anahtar sayısı gösterilir, sonucu hızlıca doğrulamak için uygundur; ayrıntılı alan listesi için sağdaki biçimlendirilmiş çıktıyı doğrudan inceleyebilirsiniz.
Araç JSON'larımı sunucuya yükler mi?
Hayır. Ayrıştırma, birleştirme ve biçimlendirme tamamen tarayıcıda yerel olarak gerçekleşir, giriş ve ara sonuçlar hiçbir sunucuya gönderilmez. Çevrimdışı kullanılabilir; hassas bilgiler içeren (üretim ortamı konfigürasyonları, dahili API yanıtları gibi) çoklu kaynak JSON'ları işlemek için uygundur.
JSON biçimlendirici ve Schema doğrulayıcı ile birlikte kullanmak için en iyi sıra nedir?
Önerilen işlem zinciri: ① JSON Onar (geçersiz JSON'u temizle) → ② Bu araç JSON Birleştir (çoklu kaynağı birleştir) → ③ JSON Biçimlendir (girintiyi birleştir) → ④ JSON Schema Doğrula (nihai yapıyı doğrula) → ⑤ Kod üretimi (TypeScript / Java / Go vb.). İhtiyacınıza göre adımlardan seçim yapabilirsiniz.
Sorun Giderme
Birleştirme "Unexpected token" veya "Invalid JSON" hatası veriyor
Neden: giriş kutularından en az birindeki JSON geçersizdir. Çözüm: önce hatalı JSON'u「JSON Onar」aracına yapıştırarak temizleyin (sondaki virgül, tek tırnak, tırnaksız anahtar vb. otomatik olarak düzeltilir), ardından bu araca geri dönüp birleştirin; veya dış süslü parantezleri / köşeli parantezleri atlayıp atlamadığınızı kontrol edin.
Birleştirme sonrası bazı alanlar görünmüyor
Neden: shallow/array replace stratejisinde aynı isimli anahtarlar son girdi tarafından tümüyle üzerine yazılır; deep merge'de null değer içeren alanlar da önceki nesnelerin üzerine yazar. Çözüm: stratejiyi「Deep Merge」olarak değiştirip katman katman inceleyin; son girdideki null'un üzerine yazdığı doğrulanırsa, null alanını son girdiden silin veya bir yer tutucu değerle değiştirin.
Diziler birleştirilmek yerine üzerine yazılmış
Neden: mevcut strateji「Shallow Merge」veya「Array Replace」dir. Çözüm: araç çubuğu açılır menüsünden「Array Concat (Dizi Birleştirme)」ye geçin; veya iki diziyi manuel olarak birleştirdikten sonra tekrar birleştirin.
Deep merge sonucunda nesne diziye dönüşmüş veya tersi olmuş
Neden: iki JSON aynı yolda "nesne vs dizi" tür uyuşmazlığına sahip, deep merge tür uyuşmazlığında "son girdi esas alınır" davranışı gösterir. Çözüm: her iki tarafın türünü birleştirin (ikisi de nesne veya ikisi de dizi olsun), veya semantiği netleştirmek için shallow/array replace stratejisine geçin.
Birleştirme sonrası anahtar sırası bozuldu
Neden: ikinci JSON'un yeni anahtarları "eklenme konumuna" göre ilk JSON'un sonuna eklenir, tarayıcı/ayrıştırıcı saf tamsayı anahtarları otomatik olarak sayısal sıraya dizer. Çözüm: tüm giriş JSON'larını birleştirmeden önce「JSON Sırala」aracıyla anahtar sırasını standartlaştırın; veya sonucu kullanmadan önce tekrar sıralayın.
Büyük dosyalar (10 MB+) birleştirilirken donuyor
Neden: tarayıcının birden fazla büyük metni tek seferde JSON.parse etmesi büyük miktarda bellek tüketir. Çözüm: her bir girdiyi 1-2 MB altında tutun; çok büyük dosyalar için yerelde Node.js (lodash.merge) veya Python (mergedeep) betiği kullanın; işlem bittikten sonra bu araçla küçük ölçekli doğrulama yapın.
Sözlük
- JSON Merge
- İki veya daha fazla JSON nesnesini belirli kurallara göre tek bir yeni nesnede birleştirme işlemi; temel zorluk "anahtar çakışmalarında çözüm stratejisidir."
- Deep Merge / Derin Birleştirme
- İç içe nesnelerin içine özyinelemeli olarak giren ve her yaprak düğümü ayrı ayrı birleştiren strateji; her iki taraf da düz nesneyse özyineleme yapar, aksi takdirde üzerine yazma uygular.
- Shallow Merge / Sığ Birleştirme
- Yalnızca üst düzey anahtarları birleştiren, aynı isimli anahtarları tümüyle üzerine yazan strateji; JavaScript'te `Object.assign({}, a, b)` ifadesine eşdeğerdir.
- Array Concat / Dizi Birleştirme
- Dizi birleştirme stratejilerinden biri: birden fazla diziyi tüm öğelerin sırasını koruyarak tek bir uzun dizide birleştirir; genellikle API yanıt agregasyonunda kullanılır.
- Array Replace / Dizi Değiştirme
- Dizi birleştirme stratejilerinden biri: aynı isimli dizilerde son girdiyi esas alarak tümüyle üzerine yazar; genellikle konfigürasyon üzerine yazmada kullanılır.
- Object.assign
- JavaScript'in yerleşik yöntemi; bir veya daha fazla kaynak nesnenin tüm numaralandırılabilir kendi özelliklerini hedef nesneye sığ olarak kopyalar; sığ birleştirmenin fiili standart uygulamasıdır.
- lodash.merge
- Lodash kütüphanesinin sunduğu derin birleştirme fonksiyonu; Node.js ekosisteminde en yaygın kullanılan deep merge uygulamasıdır; dizileri birleştirir, üzerine yazmaz.
- mergedeep (Python)
- Python ekosisteminin derin birleştirme kütüphanesi; pip install mergedeep ile yüklenir; dizilerin birleştirilmesi/üzerine yazılması davranışını kontrol etmek için strategy parametresini destekler.
- jq -s 'add'
- jq komutuyla birden fazla JSON dizisini tek bir dizide toplama; birden fazla JSON nesnesini birleştirmek için `reduce .[] as $item ({}; . * $item)` kullanılır.
- BFF (Backend for Frontend)
- Mikroservis mimarisinde ön uç ile arka uç servisleri arasında yer alan agregasyon katmanı; genellikle birden fazla servisin JSON yanıtlarını tek bir birleşik yanıtta birleştirmesi gerekir; JSON birleştirmenin klasik kullanım senaryosudur.
4 JSON Birleştirme Stratejisi Karşılaştırması
| Strateji | Etki Alanı | Dizi İşleme | Tipik Senaryo |
|---|---|---|---|
| Deep Merge (Derin) | Tüm iç içe seviyelerde özyineleme | Seçilen arrayConcat/arrayReplace uygulanır | Çoklu ortam konfigürasyon katmanlama, i18n sözlük birleştirme |
| Shallow Merge (Sığ) | Yalnızca üst düzey | Tümüyle üzerine yazar | Object.assign tarzı basit üzerine yazma |
| Array Concat (Dizi Birleştirme) | Üst düzey | Yeni dizide birleştirir | Sayfalı API agregasyonu, mock veri birleştirme |
| Array Replace (Dizi Değiştirme) | Üst düzey | Son girdi esas alınır | Feature Flag konfigürasyon üzerine yazma |
Yaygın JSON Birleştirme Uygulamaları Karşılaştırma Tablosu
| Uygulama/Kütüphane | Dil | Varsayılan Davranış | Not |
|---|---|---|---|
| Object.assign | JavaScript | Sığ birleştirme | ES2015 standart kütüphanesi; ES2017 sonrası `Object.assign({}, a, b)` kullanılabilir |
| { ...a, ...b } | JavaScript | Sığ birleştirme | Spread operatörü, daha temiz sözdizimi |
| lodash.merge | JavaScript | Derin birleştirme | Dizileri birleştirir, üzerine yazmaz; npm install lodash.merge |
| mergedeep | Python | Derin birleştirme | Dizi birleştirmeyi üzerine yazma olarak değiştirmek için strategy='override' kullanın |
| deepmerge (Python) | Python | Derin birleştirme | Bir diğer popüler uygulama; pip install deepmerge |
| jq -s 'add' | Shell | Dizi toplama | Nesne birleştirme için `reduce .[] as $i ({}; . * $i)` gerekir |
Authoritative References
- JSON Compress
- CSV'den JSON'a
- JSON'den CSV'ye
- JSON Diff
- JSON Escape / Unescape
- JSON Düzleştirme
- JSON Biçimlendirici
- JSON Oluşturucu
- JSONPath Sorgu
- JSON Birleştir
- JSON Onarımı
- JSON Schema Doğrulayıcı
- JSON Sıralama
- JSON Stringify
- JSON'dan HTML'ye
- JSON'dan Java'ya
- JSON'den Markdown'a
- JSON to SQL
- JSON'dan TOML'e
- JSON'dan TypeScript'e
- XML'den JSON'a
- JSON'u XML'e donustur
- YAML'den JSON'a
- JSON → YAML Dönüştürücü
- JSON'dan Go'ya
- JSON'u Rust'a
- JSON to Swift
- JSON'dan C#'ye
- JSON'dan C++'ya
- JSON'dan PHP'ye
- JSON'u Python'a