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
- JSON'u sol panele yapıştırın, örnek yükleyin veya .json dosyası içe aktarın
- Anahtar sıralama ya da dizi sıralama modunu seçip yön ve özyineleme ayarını yapın
- Sıralama düğmesine basıp sonucu sağ panelde kontrol edin
- 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ı
pythonimport 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
| Senaryo | Sıralama ölçütü | Önerilen yöntem | Araç |
|---|---|---|---|
| Git Diff gürültüsünü azaltma | Nesne anahtarları | Özyinelemeli anahtar sıralama | Bu araç / jq -S |
| Yapılandırma normalizasyonu | Nesne anahtarları | Artan + özyineleme | Bu araç |
| API cache anahtarını sabitleme | Nesne anahtarları | Önce sırala sonra stringify | Bu araç / kod |
| Dizi verisini hızlı düzenleme | Dizi elemanları | Dizi modu | Bu araç |
JSON sıralama, diff ve merge farkı
| Araç | Amaç | Neyi düzenler | Sonraki adım |
|---|---|---|---|
| JSON Sıralama | Sırayı birleştirme | Anahtarlar / diziler | Diff, biçimlendirme |
| JSON Diff | Değişiklik karşılaştırma | Yok | Tercihen sıralamadan sonra |
| JSON Merge | Birden çok kaynağı birleştirme | Gerekirse merge sonrası | Merge sonrası sıralama |
| JSON Repair | Geçersiz JSON düzeltme | Yok | Düzeltmeden sonra sıralama |
Authoritative References
- JSON Compress
- CSV'den JSON'a
- JSON'den CSV'ye
- JSON Diff
- JSON Escape / Unescape
- JSON Düzleştirme
- JSON Biçimlendirici
- JSON Oluşturucu
- JSONPath Sorgu
- JSON Birleştir
- JSON Onarımı
- JSON Schema Doğrulayıcı
- JSON Sıralama
- JSON Stringify
- JSON'dan HTML'ye
- JSON'dan Java'ya
- JSON'den Markdown'a
- JSON to SQL
- JSON'dan TOML'e
- JSON'dan TypeScript'e
- XML'den JSON'a
- JSON'u XML'e donustur
- YAML'den JSON'a
- JSON → YAML Dönüştürücü
- JSON'dan Go'ya
- JSON'u Rust'a
- JSON to Swift
- JSON'dan C#'ye
- JSON'dan C++'ya
- JSON'dan PHP'ye
- JSON'u Python'a