Dibangun dengan AI canggih di perangkat Anda dan akselerasi perangkat keras untuk performa profesional dengan privasi tanpa kompromi.AI di perangkat — profesional dan privat.
Penggabung Objek JSON
Gabungkan JSON dengan strategi deep, array, dan kunci
- Hingga 5 dokumen
- 4 strategi array
- Laporan konflik
Jatuhkan berkas JSON di sini
JSON, JSONC, NDJSON, dan JSON Lines · hingga 5 berkas · tidak ada yang keluar dari perangkat Anda
Deep menggabungkan objek bersarang kunci per kunci. Shallow menggantinya utuh.
Apa yang terjadi ketika dua array bertemu di jalur yang sama.
JSON tidak punya undefined, jadi null bisa berarti nilai atau berarti «batalkan».
Asli mempertahankan urutan dasar. A-Z memberi diff yang stabil.
NDJSON memerlukan hasil berupa array — penggabungan ini menghasilkan objek.
Berkas konfigurasi lazim memuat komentar yang ditolak parser ketat.
Tiap dokumen ditulis terpisah dengan pengaturan ini, sebagai satu arsip.
Gratis: 5 dokumen, 10 MB masing-masing, 30 MB total.
Cara menggabungkan berkas JSON
- 1Tambahkan dokumen AndaJatuhkan hingga lima berkas .json, .jsonc, .jsonl, atau .ndjson, atau klik Tempel JSON untuk mengetik sebuah dokumen. Urutan penting — dokumen berikutnya menang bila berbeda — dan panah pada tiap baris mengubahnya.
- 2Pilih cara objek digabungDeep merge menggabungkan objek bersarang secara rekursif. Shallow hanya menggabungkan kunci tingkat teratas dan mengganti objek bersarang secara utuh. Atur kebijakan null bila null eksplisit tidak boleh menghapus nilai yang ada.
- 3Pilih cara array digabungGanti mempertahankan array terakhir, Sambung menyatukannya, Union menyatukannya tanpa duplikat, dan Gabung berdasarkan kunci menyatukan rekaman yang berbagi kunci seperti id.
- 4Gabungkan dan periksaTekan Gabungkan. Laporan konflik memuat setiap jalur tempat dokumen berikutnya menimpa nilai sebelumnya, beserta kedua nilainya, dan laporan masukan menampilkan kunci ganda serta peringatan presisi dari tiap sumber.
- 5Unduh atau salinPilih indentasi, atau NDJSON bila hasilnya berupa array, lalu unduh atau salin. Bila Anda mengubah pengaturan setelahnya, hasil ditandai usang sampai Anda menerapkannya kembali.
Apa yang ditawarkan alat gabung JSON ini
Gabungkan hingga lima dokumen JSON menjadi satu. Semuanya digabung sesuai urutan yang Anda susun, sehingga yang belakangan menang bila berbeda, dan panah pada tiap baris mengubah urutan itu. Akar JSON apa pun berfungsi — objek, array, dan nilai sederhana sekaligus. Objek bersarang dapat digabung rekursif atau diganti utuh, array punya empat strategi tersendiri, dan setiap nilai yang tertimpa dicatat, sehingga hasilnya bisa Anda periksa alih-alih sekadar dipercaya.
- Berapa pun dokumennya, dalam urutan apa pun — Jatuhkan berkas, tempel teks, atau keduanya. Susun ulang baris untuk mengubah dokumen mana yang menang. Lima dokumen pada paket gratis, dan urutan adalah satu-satunya jaminan prioritas alat ini.
- Deep atau shallow, dan empat strategi array — Objek digabung rekursif atau hanya di tingkat teratas. Array diganti, disambung, dijadikan union tanpa duplikat, atau digabung rekaman per rekaman lewat kolom kunci.
- Laporan konflik, bukan sekadar hasil — Setiap jalur tempat dokumen berikutnya menggantikan nilai sebelumnya, dengan kedua nilai dan dokumen yang menang. Tidak ada alat gabung JSON daring lain yang menerbitkannya.
- Ia membaca JSON yang benar-benar Anda punya — Komentar dan koma di akhir, NDJSON, UTF-16, tanda urutan bita. Masing-masing adalah berkas yang dianggap rusak oleh parser ketat dan tampak baik-baik saja di setiap editor.
Ditenagai algoritma pemrosesan yang dioptimalkan.
Shallow merge dibanding deep merge
Ini keputusan yang paling mengubah hasil, dan kedua jawabannya benar-benar berbeda, bukan yang satu lebih baik dari yang lain.
Shallow merge hanya menggabungkan tingkat teratas. Bila sebuah kunci ada di kedua dokumen, nilai yang belakangan menggantikan yang lebih awal sepenuhnya — dan «sepenuhnya» termasuk objek bersarang: objek dasar dengan sepuluh kunci bersarang lenyap begitu dokumen berikutnya menyebut kunci itu sama sekali. Deep merge justru menyusuri objek bersarang dan menggabungkannya kunci per kunci, sehingga sebuah penggantian hanya menyentuh kunci yang benar-benar disebutnya.
Menggabungkan {"server": {"host": "localhost", "port": 8080}} dengan {"server": {"port": 9090}} menghasilkan {"server": {"port": 9090}} pada shallow merge — host-nya hilang — dan {"server": {"host": "localhost", "port": 9090}} pada deep merge. Deep menjadi bawaan di sini karena melapiskan konfigurasi adalah alasan orang mencari alat penggabung, dan itu pula yang dilakukan lodash.merge dan setiap pustaka sejenis.
Bagaimana array digabungkan
Deep merge tidak berkata apa pun tentang array: dua array bukan dua objek, dan tidak ada satu cara benar untuk menggabungkannya. Kebanyakan pustaka diam-diam memilih satu perilaku dan tidak pernah menyebutkannya. Alat ini bertanya.
- Ganti — Array yang belakangan menang. Inilah yang lazim dilakukan deep merge dan yang dilakukan kebanyakan pustaka tanpa memberi tahu. Ini bawaannya di sini.
- Sambung — Semua item dari kedua array, berurutan, termasuk duplikat. Tepat untuk log, aliran peristiwa, dan apa pun yang tiap entrinya adalah rekaman tersendiri.
- Union — Kedua array disatukan lalu duplikatnya dibuang dengan membandingkan struktur alih-alih identitas: {"a":1,"b":2} dan {"b":2,"a":1} dihitung sebagai item yang sama.
- Gabung berdasarkan kunci — Memperlakukan kedua array sebagai kumpulan rekaman dan menyatukan yang berbagi kolom kunci. Dibahas tersendiri di bawah.
Strategi array berlaku di mana pun dua array bertemu, pada mode shallow maupun deep. Membuatnya mati pada mode shallow berarti menampilkan kendali yang diam-diam tidak melakukan apa pun.
Menggabungkan rekaman berdasarkan kunci
Gabung berdasarkan kunci adalah strategi yang mengubah dua array rekaman menjadi satu. Tentukan kolom kuncinya — id secara bawaan — dan rekaman yang cocok akan menyatu kolom per kolom alih-alih satu array menggantikan yang lain.
- Rekaman yang cocok menyatu — Rekaman dari dokumen berikutnya yang kuncinya cocok dengan yang sebelumnya digabung ke dalamnya memakai aturan objek yang sama seperti di tempat lain, sehingga kolomnya ditambahkan alih-alih menggantikan seluruh rekaman.
- Rekaman baru ditambahkan — Rekaman yang kuncinya belum ada ditambahkan di akhir, menjaga urutan dokumen sebelumnya tetap utuh.
- Rekaman tanpa kunci dibiarkan — Item yang bukan objek, atau objek yang tidak memuat kolom kunci, ditambahkan apa adanya alih-alih ditebak.
- Tipe adalah bagian dari kunci — Angka 1 dan teks "1" adalah rekaman berbeda dan tidak menyatu. Menganggapnya sama adalah kesalahan penggabungan klasik, dan menghasilkan sesuatu yang tampak sangat masuk akal dan keliru.
Apa yang terjadi pada null
JSON tidak punya undefined, sehingga null membawa dua makna sekaligus: ia sebuah nilai sungguhan, dan ia satu-satunya cara sebuah lapisan konfigurasi berkata «batalkan apa pun yang tadi di sini». Kedua bacaan itu sah dan tidak ada pustaka yang bisa tahu mana yang Anda maksud. Secara bawaan null berikutnya menimpa, karena null adalah nilai. Ubah kebijakan null menjadi Abaikan dan null pada dokumen berikutnya dilewati seluruhnya, sehingga tidak akan pernah menghapus apa yang ditetapkan dokumen dasar. Laporan menghitung berapa null yang diabaikan, sehingga salah pilih menjadi terlihat alih-alih luput.
Urutan kunci, dan mengapa penting untuk diff
Objek JSON tidak punya urutan kunci yang didefinisikan secara formal, tetapi dalam praktiknya semua parser dan serializer mempertahankan urutan penulisannya — yang berarti urutan itu muncul dalam diff kontrol versi Anda. Secara bawaan hasilnya mempertahankan urutan dokumen dasar dan menambahkan kunci baru dari dokumen berikutnya di akhir, sehingga penggabungan menghasilkan diff sekecil mungkin. Urutkan A sampai Z bila Anda ingin keluaran yang stabil terlepas dari bagaimana masukannya kebetulan ditulis, yang tepat untuk berkas yang dibuat ulang oleh beberapa alat.
Laporan konflik
Alat penggabung yang hanya memberi Anda berkas hasilnya meminta Anda percaya begitu saja. Yang ini mencatat setiap tempat sebuah nilai hilang.
Konflik adalah setiap jalur tempat dokumen berikutnya menggantikan nilai sebelumnya alih-alih menyatu dengannya: nilai sederhana atas nilai sederhana, array atas array, atau objek atas objek pada shallow merge. Laporan memuat jalur, nilai yang digantikan, nilai penggantinya, dan dokumen mana yang menang. Nilai yang digabung alih-alih digantikan bukan konflik, begitu pula dokumen berikutnya yang menulis nilai identik — keduanya hanya akan menjadi derau. Di sampingnya, laporan masukan memuat apa yang ditemukan di tiap dokumen sumber sebelum penggabungan dimulai.
Kunci ganda dan presisi angka
Dua hal yang dibuang diam-diam oleh setiap parser JSON, dan keduanya mengubah isi berkas hasil Anda.
- Kunci ganda — {"a": 1, "a": 2} adalah JSON sah dan setiap parser menyimpan yang terakhir, membuang fakta bahwa ada dua. Bila duplikat itu keliru, penggabungan yang Anda audit bukan penggabungan yang Anda tulis. Tiap dokumen sumber melaporkan berapa kunci ganda yang dimuatnya dan di mana.
- Angka yang tidak bertahan bolak-balik — Angka JavaScript adalah double IEEE-754 dan membawa 15 sampai 17 digit signifikan. Id basis data 64-bit seperti 9007199254740993 menjadi 9007199254740992 di setiap parser JSON di setiap peramban, sehingga berkas hasil memuat id yang berbeda dari masukannya. Tidak ada perbaikan di dalam model data JSON, jadi alat ini melaporkannya alih-alih berpura-pura sebaliknya.
Mengapa menggabungkan JSON?
Hampir semua penggabungan JSON adalah salah satu dari segelintir tugas, dan mengetahui yang mana biasanya sudah menentukan pengaturannya.
- Melapiskan konfigurasi — Konfigurasi dasar, lalu penggantian per lingkungan, lalu lokal. Deep merge, urutan kunci asli, dan Abaikan null bila berkas penggantian Anda memakai null sebagai catatan.
- Menyatukan respons API — Beberapa respons menjadi satu objek. Deep merge, dan Gabung berdasarkan kunci bila responsnya memuat array rekaman yang harus disejajarkan lewat id.
- Menyatukan kumpulan rekaman — Dua ekspor entitas yang sama dengan kolom berbeda. Gabung berdasarkan kunci pada pengenal bersama menjadikannya satu kumpulan lengkap.
- Menyatukan terjemahan — Berkas bahasa yang terpecah antar tim atau fitur. Deep merge dengan urutan A-Z memberi berkas stabil yang mudah dibandingkan tiap kali dibuat ulang.
- Menyusun data uji — Satu fixture bawaan ditambah penggantian per kasus, sehingga tiap uji hanya menyatakan yang membuatnya berbeda.
Opsi sekilas
- Mode penggabungan — Deep menggabungkan objek bersarang secara rekursif. Shallow hanya menggabungkan kunci tingkat teratas dan mengganti objek bersarang secara utuh.
- Array — Ganti, Sambung, Union (tanpa duplikat), atau Gabung berdasarkan kunci.
- Kolom kunci — Kolom yang menandai sebuah rekaman untuk Gabung berdasarkan kunci. Bawaannya id. Dicocokkan berdasarkan tipe dan nilai.
- Null — Timpa, agar null eksplisit menggantikan sebuah nilai, atau Abaikan, agar tidak pernah menghapusnya.
- Urutan kunci — Asli mempertahankan urutan dokumen dasar dan menambahkan kunci baru di akhir. A-Z mengurutkan tiap objek untuk diff yang stabil.
- Indentasi — Minified, 2 spasi, 4 spasi, atau tab.
- Keluaran — JSON, atau NDJSON bila hasil gabungannya berupa array.
- Terima komentar dan koma di akhir — Aktif secara bawaan. Matikan untuk menuntut JSON ketat dari setiap dokumen.
- Atur ulang — Menghapus semua dokumen, hasil, dan semua pengaturan kembali ke bawaannya.
Batas dan paket
Paket gratis menerima lima dokumen, hingga 10 MB masing-masing dan 30 MB total. Totalnya biasanya angka yang mengikat, karena sebuah penggabungan menahan semua masukan dan hasilnya di memori sekaligus. Semua kendali yang menentukan benar tidaknya penggabungan bersifat gratis: kedua mode, keempat strategi array, kolom kunci, kebijakan null, urutan kunci, keempat indentasi, kedua format keluaran, dan kedua laporan. Pro hanya menaikkan skala: lebih banyak dokumen, batas perangkat Anda sendiri alih-alih plafon tetap, dan satu kumpulan yang dikirim sebagai satu arsip.
Pertanyaan yang sering diajukan
Bagaimana cara kerja alat gabung JSON ini?
Tambahkan hingga lima dokumen JSON dengan menjatuhkan berkas atau menempel teks, pilih apakah objek digabung secara mendalam atau hanya di tingkat teratas dan bagaimana array digabungkan, lalu tekan Gabungkan. Dokumen digabung sesuai urutan daftar, sehingga yang belakangan menang bila berbeda, dan Anda dapat menyalin atau mengunduh hasilnya atau melihat persis apa yang tertimpa.
Apakah data saya aman?
Ya. Setiap dokumen dibaca, digabung, dan ditulis di perangkat Anda sendiri, dan tidak ada yang diunggah, disimpan, atau dicatat. Setelah halaman dimuat, alat ini tetap bekerja luring, sehingga aman untuk berkas konfigurasi, kredensial, dan data rahasia.
Apa beda shallow merge dan deep merge?
Shallow merge hanya menggabungkan kunci tingkat teratas: bila sebuah kunci ada di kedua dokumen, nilai yang belakangan menggantikan yang lebih awal sepenuhnya, termasuk objek bersarang. Deep merge justru menyusuri objek bersarang dan menggabungkannya kunci per kunci, sehingga Anda dapat melapiskan penggantian di atas konfigurasi dasar tanpa kehilangan kunci bersarang yang tidak berkaitan.
Bisakah saya menggabungkan array JSON, bukan hanya objek?
Bisa. Akar JSON apa pun berfungsi — objek, array, teks, angka, boolean, dan null — dan empat strategi menentukan apa yang terjadi saat dua array bertemu. Ganti mempertahankan array yang belakangan, Sambung menyatukannya berurutan, Union menyatukannya sambil membuang duplikat tanpa memedulikan urutan kunci, dan Gabung berdasarkan kunci menyatukan rekaman yang berbagi kolom seperti id.
Bagaimana menggabungkan array rekaman lewat id?
Pilih Gabung berdasarkan kunci lalu tentukan kolom kuncinya, yang secara bawaan adalah id. Rekaman pada dokumen berikutnya yang kuncinya cocok dengan dokumen sebelumnya digabung kolom per kolom, rekaman dengan kunci baru ditambahkan di akhir, dan rekaman tanpa kunci itu ditambahkan apa adanya. Kunci dicocokkan berdasarkan tipe juga, sehingga angka 1 dan teks "1" tetap menjadi rekaman berbeda.
Bagaimana konflik kunci dan urutan penimpaan ditangani?
Dokumen digabung sesuai urutan yang ditampilkan, sehingga dokumen berikutnya selalu memenangkan konflik, dan panah pada tiap baris mengubah urutan itu. Setiap penimpaan dicatat: laporan konflik memuat jalur, nilai yang digantikan, nilai penggantinya, dan dokumen mana yang menang, sehingga sebuah penggabungan bisa diaudit, bukan sekadar diterima.
Apa yang terjadi pada nilai null?
Secara bawaan null eksplisit pada dokumen berikutnya menimpa apa pun sebelumnya, karena null adalah nilai JSON yang sebenarnya. JSON tidak punya undefined, sehingga null juga satu-satunya cara sebuah lapisan konfigurasi berkata «batalkan ini» — bila itu bukan maksud Anda, ubah kebijakan null menjadi Abaikan dan null tidak akan pernah menghapus nilai yang sudah ada.
Apakah bisa membaca berkas dengan komentar atau koma di akhir?
Bisa. Berkas konfigurasi seperti tsconfig.json dan .eslintrc.json lazim memuat komentar baris dan blok serta koma di akhir, yang ditolak mentah-mentah oleh JSON.parse. Alat ini mengenalinya, melaporkan berapa banyak yang ditemukan, dan tetap menggabungkan berkasnya. Ia juga membaca NDJSON dan JSON Lines sebagai array serta membuang tanda urutan bita yang ditambahkan editor Windows.
Apa syarat masukannya dan bagaimana bila JSON-nya tidak sah?
Dokumen JSON sah apa pun diterima, dalam pengodean apa pun yang membawa tanda urutan bita, hingga 10 MB per berkas dan 30 MB total pada paket gratis. Bila sebuah dokumen tidak dapat diurai, barisnya menampilkan baris, kolom, dan baris bermasalah dengan penunjuk di bawah masalahnya, ditambah tautan ke Formatter dan Validator JSON agar Anda dapat memperbaikinya dan menggabungkan lagi.
Apakah gratis, dan apakah berjalan di ponsel dan luring?
Ya, alat ini gratis. Semua kendali yang menentukan benar tidaknya penggabungan — kedua mode, keempat strategi array, kolom kunci, kebijakan null, urutan kunci, keempat indentasi, dan kedua format keluaran — gratis, dan berjalan di ponsel serta tablet. Ia tetap bekerja luring setelah dimuat, dan Pro hanya menaikkan skala: lebih banyak dokumen, batas perangkat Anda sendiri alih-alih plafon tetap, dan satu kumpulan yang dikirim sebagai satu arsip.
dari 70 penilaian
Beri nilai alat ini
Ketuk bintang — hanya sebentar
Komentar, koma di akhir, NDJSON, dan tanda urutan bita
JSON ketat dan JSON yang benar-benar ada di cakram orang bukanlah hal yang sama. Empat perbedaan menjelaskan hampir setiap berkas yang «sah di mana-mana kecuali di program saya».