JSON Sıralama

JSON nesnelerinin anahtarlarını ve dizi elemanlarını düzenleyerek veriyi daha okunur, karşılaştırılabilir ve tutarlı hale getirir. Tüm işlem tarayıcı içinde yerel olarak yapılır.

İlgili Öneriler

JSON sıralama nedir?

JSON sıralama, nesne anahtarlarını belirli bir düzene göre yeniden yerleştirmek veya dizi elemanlarını değer sırasına göre dizmek anlamına gelir. Değerler ve veri tipleri değişmez, yalnızca fiziksel sıra değişir.

Bu normalleştirme Git Diff gürültüsünü azaltmak, yapılandırma dosyalarını standartlaştırmak, JSON Diff öncesinde veriyi hazırlamak ve API önbellek anahtarlarını kararlı hale getirmek için kullanılır. Aynı veri sırf anahtar sırası yüzünden farklı görünmez.

GeekFormat aracı iki mod sunar: anahtar sıralama ve dizi sıralama. Ayrıca artan/azalan yön değişimi ile özyinelemeli sıralama desteği verir. Veriler sunucuya gönderilmez.

Kullanım senaryoları

  • package.json, tsconfig.json ve benzeri dosyalarda anahtar sırasını birleştirmek
  • İki JSON'u karşılaştırmadan önce sıralayıp yalnızca sıra farkından doğan sahte diffleri azaltmak
  • API yanıtlarının anahtar sırasını sabitleyerek cache, hash ve snapshot sonuçlarını tutarlı hale getirmek
  • Büyük JSON dosyalarını code review veya yapılandırma denetimi öncesinde düzenlemek
  • Merge veya repair sonrasındaki çıktıyı sonraki doğrulama adımlarına hazırlamak

Nasıl Kullanılır

  1. JSON'u sol panele yapıştırın, örnek yükleyin veya .json dosyası içe aktarın
  2. Anahtar sıralama ya da dizi sıralama modunu seçip yön ve özyineleme ayarını yapın
  3. Sıralama düğmesine basıp sonucu sağ panelde kontrol edin
  4. Sonucu kopyalayın veya sorted.json olarak indirin

Özellikler

  • İki mod: nesne anahtarlarını veya dizi elemanlarını sıralayabilirsiniz
  • Özyinelemeli işleme: iç içe nesnelerin içi de otomatik olarak aynı düzene getirilir
  • Artan ve azalan yön: sıralama yönünü tek tıkla değiştirebilirsiniz
  • Yapı korunur: yalnızca sıra değişir, değerler ve tipler aynı kalır
  • Yerel gizlilik: JSON verisi sunucuya gönderilmeden tarayıcıda işlenir
  • Sonraki araçlarla uyum: sonuç JSON Diff, Repair ve Format ile kolayca kullanılabilir

Kod Örnekleri

JavaScript ile anahtarları özyinelemeli sıralama

javascript
// Anahtarları özyinelemeli sıralar ve yeni bir nesne döndürür
function sortKeysDeep(value) {
  if (Array.isArray(value)) return value.map(sortKeysDeep);
  if (value !== null && typeof value === 'object') {
    return Object.keys(value)
      .sort((a, b) => a.localeCompare(b))
      .reduce((acc, k) => {
        acc[k] = sortKeysDeep(value[k]);
        return acc;
      }, {});
  }
  return value;
}

const data = { zoo: { animals: ['zebra', 'elephant'] }, alpha: 1, beta: 2 };
console.log(JSON.stringify(sortKeysDeep(data), null, 2));

Python'da sort_keys=True kullanımı

python
import json

data = {"zoo": {"animals": ["zebra", "elephant"]}, "alpha": 1, "beta": 2}

print(json.dumps(data, indent=2, sort_keys=True, ensure_ascii=False))

arr = [3, 1, 4, 1, 5]
print(sorted(arr))
print(sorted(arr, reverse=True))

jq ile JSON anahtar ve dizi sıralama

bash
# Anahtarları özyinelemeli sırala
jq -S '.' data.json

# Dizi elemanlarını sırala
jq 'sort' data.json

# Belirli bir alana göre sırala
jq 'sort_by(.age)' data.json

Sık Sorulan Sorular

JSON sıralama ile JSON biçimlendirme arasındaki fark nedir?

Biçimlendirme yalnızca girintileri ve satır sonlarını düzeltir; JSON sıralama ise anahtarların ve dizi elemanlarının yerini değiştirir. İkisini birlikte kullanmak hem düzenli sıra hem de okunabilir görünüm sağlar.

Sıralamadan sonra JSON büyür mü?

Genellikle hayır. Veri miktarı aynı kalır, yalnızca alanların ve elemanların sırası değişir.

Değerler veya veri tipleri değişir mi?

Hayır. `null`, sayı, metin, boolean, nesne ve diziler olduğu gibi korunur.

Özyinelemeli sıralama ne demektir?

Sıralamanın yalnızca en dış nesneye değil, içteki tüm nesnelere de uygulanmasıdır. Yapılandırma ve API verilerinde genelde açık kalması daha uygundur.

Neden tamsayı gibi görünen anahtarlar en üste geliyor?

JavaScript `0`, `1`, `2` gibi anahtarları sayısal sırayla işler. Bu platform davranışıdır, araç hatası değildir.

Dizideki nesneler nasıl sıralanıyor?

Dizi modu elemanları genel bir karşılaştırma ile değerlendirir. Belirli bir alan, örneğin `price` veya `date`, baz alınacaksa `sort_by(.field)` gibi bir yöntem daha uygundur.

JSON sunucuya yükleniyor mu?

Hayır. Tüm işlemler tarayıcı içinde yerel olarak yapıldığı için hassas JSON içerikleri için de uygundur.

JSON Diff veya Schema ile birlikte en iyi kullanım sırası nedir?

Genelde JSON Repair → JSON sıralama → JSON Diff / biçimlendirme → Schema doğrulama sırası en kullanışlı akıştır. Önce sıra sabitlenir, sonra diff gürültüsü azalır.

Sorun Giderme

Invalid JSON hatası görünüyor

Girdi JSON'unda sözdizimi hatası olabilir. Önce JSON Repair veya JSON Format ile veriyi kontrol edin.

Sayısal görünen anahtarlar hep üstte kalıyor

JavaScript tamsayı benzeri anahtarları sayısal sırada işler. Bu araç hatası değil, platform davranışıdır.

Dizideki nesneler beklediğim sıraya gelmiyor

Dizi modu alan anlamını bilmez ve elemanları genel biçimde karşılaştırır. `price` veya `date` için `sort_by` kullanmanız gerekir.

İç içe nesneler sıralanmıyor

Özyinelemeli sıralamanın açık olduğundan emin olun. Kapalıysa yalnızca üst seviye sıralanır.

Çok büyük JSON tarayıcıyı yavaşlatıyor

Büyük dosyaları önce `jq`, Python veya Node.js ile yerelde işleyip sonra sonucu tarayıcıda doğrulamak daha stabil olur.

Sözlük

JSON Sort
Yalnızca anahtarların veya dizi elemanlarının sırasını değiştiren, değerleri ve tipleri koruyan işlemdir.
Recursive Sort
Sıralamanın yalnızca üst seviyeye değil, tüm iç içe nesnelere uygulanmasıdır.
Ascending / Descending
Artan sıralama A-Z veya küçükten büyüğe, azalan sıralama bunun tersidir.
Canonical Form
Karşılaştırma, önbellek ve hash üretimi için uygun, normalize edilmiş JSON gösterimidir.
Git Diff Noise
Gerçek veri değişimi yerine sıra veya biçim farkından doğan gereksiz diff satırlarıdır.
localeCompare
JavaScript'te dizeleri karşılaştırmak için kullanılan ve anahtar sıralamada sıkça yararlanılan API'dir.

JSON sıralamanın sık kullanıldığı durumlar

SenaryoSıralama ölçütüÖnerilen yöntemAraç
Git Diff gürültüsünü azaltmaNesne anahtarlarıÖzyinelemeli anahtar sıralamaBu araç / jq -S
Yapılandırma normalizasyonuNesne anahtarlarıArtan + özyinelemeBu araç
API cache anahtarını sabitlemeNesne anahtarlarıÖnce sırala sonra stringifyBu araç / kod
Dizi verisini hızlı düzenlemeDizi elemanlarıDizi moduBu araç

JSON sıralama, diff ve merge farkı

AraçAmaçNeyi düzenlerSonraki adım
JSON SıralamaSırayı birleştirmeAnahtarlar / dizilerDiff, biçimlendirme
JSON DiffDeğişiklik karşılaştırmaYokTercihen sıralamadan sonra
JSON MergeBirden çok kaynağı birleştirmeGerekirse merge sonrasıMerge sonrası sıralama
JSON RepairGeçersiz JSON düzeltmeYokDüzeltmeden sonra sıralama

Authoritative References