Meratakan JSON

Pemisah:
Kedalaman Maks:(0=unlimited)

Ubah JSON bersarang menjadi kunci datar dengan pemisah lalu pulihkan kembali ke struktur aslinya saat dibutuhkan. Semua proses berjalan aman langsung di browser.

Rekomendasi Terkait

Kasus penggunaan

  • Query dan update MongoDB: gunakan kunci bertitik tanpa perlu menulis jalur bersarang secara manual
  • Ekspor ke CSV dan Excel: ubah JSON bertingkat menjadi kolom datar untuk analisis berbasis tabel
  • Persiapan dokumen Elasticsearch: sederhanakan dokumen yang sangat bersarang sebelum indexing
  • Debugging API: bandingkan field request dan response dalam tampilan kunci datar yang sama
  • Praproses konfigurasi dan variabel lingkungan: bentangkan pengaturan bertingkat dari package.json atau settings.json

Cara Penggunaan

  1. Tempel JSON ke kolom kiri atau unggah file .json dari perangkat Anda
  2. Pilih mode flatten atau unflatten, lalu atur pemisah, perilaku array, dan kedalaman maksimum
  3. Periksa hasil di panel kanan beserta jumlah kunci dan statistik kedalaman
  4. Salin hasilnya atau unduh sebagai file .json

Fitur

  • Konversi dua arah: mendukung flatten dan unflatten untuk berpindah antara struktur bersarang dan struktur datar
  • Pemisah kustom: gunakan titik, garis bawah, slash, atau karakter lain sesuai sistem tujuan
  • Penanganan array fleksibel: array bisa dipecah menjadi kunci berindeks atau disimpan utuh sebagai satu nilai
  • Batas kedalaman maksimum: hentikan perluasan di level tertentu agar nama kunci tidak terlalu panjang
  • Pemrosesan lokal yang aman: JSON tidak dikirim ke server, semua pekerjaan selesai di browser
  • Alur kerja praktis: mendukung unggah .json, contoh data, salin hasil, dan unduh file

Contoh Kode

Meratakan JSON dengan JavaScript

javascript
function flatten(obj, prefix = '', sep = '.') {
  return Object.entries(obj).reduce((acc, [key, value]) => {
    const newKey = prefix ? `${prefix}${sep}${key}` : key;
    if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
      Object.assign(acc, flatten(value, newKey, sep));
    } else {
      acc[newKey] = value;
    }
    return acc;
  }, {});
}

flatten({ user: { name: 'Alice', contact: { email: 'a@x.com' } } });
// => { 'user.name': 'Alice', 'user.contact.email': 'a@x.com' }

Meratakan JSON dengan Python

python
def flatten(obj, parent_key='', sep='.'):
    items = {}
    for key, value in obj.items():
        new_key = f"{parent_key}{sep}{key}" if parent_key else key
        if isinstance(value, dict):
            items.update(flatten(value, new_key, sep))
        else:
            items[new_key] = value
    return items

import json
print(json.dumps(flatten({'user': {'name': 'Alice'}}), indent=2))
# => {"user.name": "Alice"}

Meratakan JSON dengan jq di terminal

bash
# Ubah JSON bersarang menjadi struktur datar dengan kunci bertitik
jq '[paths(scalars) as $p | {"key": $p | join("."), "value": getpath($p)}] | from_entries' data.json

# Kembalikan JSON datar ke struktur bersarang
# Gunakan jq 1.7+ dengan filter eksternal atau mode unflatten dari alat ini

Pertanyaan Umum

Apa itu meratakan JSON dan kapan saya membutuhkannya?

Meratakan JSON mengubah objek dan array bersarang menjadi pasangan kunci-nilai satu level. Ini berguna untuk query MongoDB, ekspor CSV, indexing Elasticsearch, variabel lingkungan, dan membandingkan field API.

Bisakah JSON yang sudah diratakan dikembalikan ke struktur aslinya?

Bisa. Selama memakai pemisah yang sama, alat ini dapat menyusun kembali objek dan array dari kunci datar. Deretan kunci angka akan dikenali otomatis sebagai array.

Bisakah saya mengganti pemisah dan cara menangani array?

Bisa. Anda dapat memakai titik, garis bawah, slash, garis bawah ganda, atau pemisah kustom. Array juga bisa dipecah menjadi `items.0`, `items.1` atau dibiarkan utuh.

Apakah aman memproses JSON secara online?

Aman. Semua parsing dan konversi berjalan di browser lokal, jadi data JSON tidak diunggah ke server luar.

Bagaimana hasilnya dipakai di MongoDB?

MongoDB mengakses field bersarang dengan notasi titik. Kunci yang dihasilkan alat ini bisa dipakai langsung di `find`, `update`, dan pipeline agregasi.

Apakah hasilnya cocok untuk CSV dan Excel?

Ya. Setelah diratakan, semua field berada di level yang sama sehingga mudah diteruskan ke JSON to CSV, Excel, atau Pandas sebagai kolom.

Bagaimana jika kunci asli sudah berisi titik atau pemisah?

Itu bisa menyebabkan konflik saat proses pemulihan. Sebaiknya ganti ke pemisah lain atau escape kunci yang bentrok sebelum konversi.

Apakah alat ini bisa menangani JSON yang sangat besar?

Respons API biasa dan file konfigurasi umum umumnya aman. Untuk JSON yang sangat besar, lebih baik pecah data atau gunakan CLI lokal seperti `jq`.

Pemecahan Masalah

Input dilaporkan bukan JSON yang valid

Biasanya karena kutip ganda kurang, koma berlebih, kurung tidak tertutup, atau nilai seperti True/False. Periksa dulu sintaksnya dengan formatter JSON.

Struktur hasil unflatten tidak sesuai

Kemungkinan kunci asli sudah berisi pemisah yang Anda pilih. Ganti pemisah atau escape kunci yang bentrok sebelum diproses.

Saat array dipecah, CSV menjadi terlalu lebar

Memecah array berdasarkan indeks akan menghasilkan banyak field tambahan. Jika ingin tabel yang lebih ringkas, simpan array sebagai satu nilai.

JSON besar membuat browser lambat

File JSON yang sangat besar memakai banyak memori. Pecah datanya menjadi beberapa bagian atau gunakan alat lokal seperti `jq`, Python, atau Node.js.