Lewati ke konten
🛠️ToolsShed

Alat Penggabungan JSON

Menggabungkan beberapa objek JSON secara mendalam dengan opsi resolusi konflik.

Objek JSON #1
Objek JSON #2

Tentang alat ini

Alat JSON Merge menggabungkan beberapa objek JSON menjadi struktur terpadu tunggal menggunakan penggabungan mendalam, yang berarti objek dan array bertingkat digabungkan secara cerdas daripada sekadar ditimpa. Ini sangat penting bagi pengembang yang bekerja dengan file konfigurasi, respons API, atau alur kerja agregasi data di mana Anda perlu menggabungkan data dari sumber berbeda sambil mempertahankan informasi bermakna dari setiap input.

Untuk menggunakan alat, tempel objek JSON Anda ke bidang input, pilih strategi penggabungan pilihan Anda (seperti penimpa, penggabungan array, atau penggabungan mendalam), dan klik tombol penggabungan. Alat ini menangani struktur bertingkat secara otomatis, menyelesaikan konflik sesuai dengan strategi pilihan Anda. Kasus penggunaan umum termasuk penggabungan konfigurasi lingkungan, penggabungan muatan API, konsolidasi pengaturan dari beberapa layanan, dan integrasi perlengkapan pengujian atau data tiruan.

Alat ini berfungsi sepenuhnya di browser Anda, jadi data JSON Anda tidak pernah meninggalkan komputer Anda, menjadikannya aman untuk konfigurasi sensitif. Ingat bahwa perilaku penggabungan bergantung pada strategi pilihan Anda—pahami apakah Anda ingin menggabungkan objek bertingkat, menambahkan array, atau mengganti nilai untuk mencapai hasil yang tepat yang Anda butuhkan.

Pertanyaan yang Sering Diajukan

Implementasi Kode

import json
from copy import deepcopy

def deep_merge(base: dict, override: dict, strategy: str = "last_wins") -> dict:
    """
    Deep merge two dicts.
    strategy: 'last_wins' | 'first_wins' | 'array_concat'
    """
    result = deepcopy(base)
    for key, value in override.items():
        if key in result:
            if isinstance(result[key], dict) and isinstance(value, dict):
                result[key] = deep_merge(result[key], value, strategy)
            elif isinstance(result[key], list) and isinstance(value, list) and strategy == "array_concat":
                result[key] = result[key] + value
            else:
                if strategy != "first_wins":
                    result[key] = deepcopy(value)
        else:
            result[key] = deepcopy(value)
    return result

# Example
a = {"name": "Alice", "scores": [1, 2], "meta": {"v": 1}}
b = {"name": "Bob",   "scores": [3, 4], "meta": {"v": 2, "new": True}}

print(json.dumps(deep_merge(a, b, "last_wins"),   indent=2))
print(json.dumps(deep_merge(a, b, "first_wins"),  indent=2))
print(json.dumps(deep_merge(a, b, "array_concat"),indent=2))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.