İç içe geçmiş nesneler ve diziler yapıyı temsil etmek için uygundur, ama düz bir anahtar-değer listesinin gerektiği yerlerde — tablolama programları, log satırları veya çeviri dosyaları — kullanışsızdır. Flatten (düzleştirme) tam olarak bu uyumsuzluğu çözer.
Nasıl çalışır
İç içe geçmiş her alan tek bir satıra dönüşür; anahtar, değere giden tam yoldur (nokta veya köşeli parantez içindeki indekslerle yazılır), değer ise değerin kendisidir. {"kullanici": {"adres": {"sehir": "İzmir"}}}, kullanici.adres.sehir → "İzmir" çiftine dönüşür. Dizi elemanları yol içinde bir indeks alır, örneğin items[0].ad.
Bunun kullanıldığı yer: çeviri (i18n) dosyaları
Nokta gösterimli düz anahtarlar, i18next gibi kütüphanelerdeki çeviri dosyalarının standart biçimidir — iç içe geçmiş bir JSON ağacı yerine settings.profile.title şeklinde yazılır. Çeviri platformları ve tablolama tabanlı iş akışları neredeyse her zaman bu düz biçimi bekler, bu yüzden iç içe geçmiş bir dil dosyasını düzleştirmek, çevirmene teslim etmeden önceki ilk adım olur.
Pratikte ne işe yarar
- API'den gelen iç içe veriyi bir tablolama programına veya düz bir veritabanı tablosuna aktarmak.
- İki karmaşık nesneyi satır satır karşılaştırmayı okunabilir hâle getirmek.
- Derinlemesine iç içe geçmiş bir JSON'da belirli bir değeri, tam yolunu tek bakışta görerek hızlıca bulmak.
Ters işlem: unflatten
Düz listeden iç içe yapıyı yeniden oluşturmak, her anahtarı yol parçalarına ayırmayı (noktalara ve parantez içindeki indekslere göre) ve iç içe nesneleri, dizileri adım adım kurmayı gerektirir. Bir yol iki anlama gelebildiğinde belirsizlik ortaya çıkar — veride hem gerçek bir "a.b" anahtarı hem de iç içe bir a.b yolu varsa, unflatten hangisinin kastedildiğini tahmin edemez ve sessizce bir şeyin üzerine yazmak yerine bir çakışma bildirir.