Objek dan array bersarang cocok untuk merepresentasikan struktur, tapi merepotkan di tempat yang butuh daftar pasangan kunci-nilai yang datar — spreadsheet, baris log, atau berkas terjemahan. Flatten (perataan) menyelesaikan ketimpangan ini.
Cara kerjanya
Setiap field bersarang menjadi satu baris, di mana kunci adalah path lengkap menuju nilai (ditulis dengan titik atau indeks dalam kurung siku) dan nilainya adalah nilai itu sendiri. {"pengguna": {"alamat": {"kota": "Bandung"}}} menjadi pasangan pengguna.alamat.kota → "Bandung". Elemen array mendapat indeks dalam path, misalnya items[0].nama.
Di mana ini dipakai: berkas terjemahan (i18n)
Kunci datar dengan notasi titik adalah format standar untuk berkas lokalisasi di pustaka seperti i18next atau vue-i18n — settings.profile.title, bukan pohon JSON bersarang. Platform terjemahan dan alur kerja berbasis spreadsheet hampir selalu mengharapkan bentuk datar ini, jadi meratakan berkas bahasa yang bersarang biasanya jadi langkah pertama sebelum diserahkan ke penerjemah.
Kegunaan praktisnya
- Mengimpor data bersarang dari API ke spreadsheet atau tabel database yang datar.
- Membuat perbandingan baris demi baris antara dua objek kompleks jadi mudah dibaca.
- Menemukan satu nilai dengan cepat dalam JSON yang sangat bersarang, dengan melihat path lengkapnya sekaligus.
Operasi kebalikannya: unflatten
Membangun kembali struktur bersarang dari daftar datar berarti memecah setiap kunci menjadi segmen path (berdasarkan titik dan indeks dalam kurung siku), lalu menyusun objek dan array bersarang secara bertahap. Ambiguitas muncul saat sebuah path bisa berarti dua hal — jika data memiliki kunci literal "a.b" sekaligus path bersarang a.b, unflatten tidak bisa menebak mana yang dimaksud, dan akan melaporkan konflik alih-alih menimpa nilai secara diam-diam.