JSON Biçimlendirici
JSON’u RFC 8259’a göre doğrulayın, 2 ya da 4 boşluk veya sekmeyle düzenleyin ya da küçültün. Hatalar satır ve sütunla gelir. Hiçbir şey yüklenmez.
En fazla 500.000 karakter. JSON’unuz cihazınızdan çıkmaz.
Nesne anahtarlarını her düzeyde Unicode kod noktasına göre sıralar.
ş, ü ya da emoji gibi karakterleri \uXXXX dizileri olarak yazar.
Doğrulamak ve biçimlendirmek için girdi alanına JSON yapıştırın.
Her şey tarayıcınızda çalışır; hiçbir şey yüklenmez.
Girdi alanına JSON yapıştırın; araç doğrular, seçtiğiniz girintiyle gösterir ve içeriğini listeler. Her şey cihazınızda işlenir, metin hiçbir yere yüklenmez.
Nasıl çalışır
Araç metni kendi ayrıştırıcısıyla RFC 8259 dilbilgisine (ECMA-404 ile aynıdır) göre denetler. JSON.parse kullanmaz; iki nedeni var. JSON.parse hata iletileri motordan motora değişir ve güvenilir satır/sütun vermez, ayrıca her sayıyı double'a çevirerek bazı değerleri sessizce değiştirir. Ayrıştırıcı özyineleme yerine kendi yığınını tutar; bu yüzden derin iç içe geçme çağrı yığınını taşırmaz ve yapıştırdığınız hiçbir şey eval'e verilmez.
Dilbilgisinin istedikleri:
- Boşluk simgeler arasında tam olarak boşluk, sekme, satır besleme ve satır başıdır. Bölünmez boşluk ya da başka bir Unicode boşluğu sözdizimi hatasıdır.
- Dizeler çift tırnak kullanır. U+0000 ile U+001F arası denetim karakterleri kaçırılmalıdır; yani dizenin içinde ham satır sonu ya da sekme hatadır. İzin verilen kaçışlar tırnak, ters bölü, bölü,
b,f,n,r,tve dört onaltılık haneliudizisidir. - Sayılar: isteğe bağlı eksi, baştaki sıfırsız tam kısım, noktanın iki yanında rakam olan isteğe bağlı kesir ve isteğe bağlı üs.
+1,.5,1.,01,0x10,NaNveInfinityJSON'da sayı değildir. - Sabit değerler yalnızca küçük harfli
true,falsevenull'dır. - Bir belge tek değerdir. Ondan sonra gelen her şey hatadır.
Metin geçerliyse çıktı seçeneklerinize göre üretilir. Girinti 2 boşluk, 4 boşluk, sekme ya da hiç (küçültülmüş; dizelerin dışında boşluk yok) olabilir. Boş nesne ve diziler {} ve [] yazılır. Nesne üyeleri kaynak sırasını korur; Anahtarları sırala açılırsa her düzeyde Unicode kod noktasına göre sıralanır, diziler asla yeniden sıralanmaz. ASCII dışı karakterleri kaçırt U+0080 ve üstündeki her karakteri \uXXXX olarak yazar; emoji iki kaçıştan oluşan bir vekil çifti olur.
Sayılar ham metin olarak kopyalanır: 0.10 0.10, 1.0E+2 1.0E+2 kalır ve 2^53'ün üstündeki tam sayılar yuvarlanmaz. Dizeler en az kaçışla yeniden yazılır: \/ ve \u0041 sırasıyla / ve A olur; UTF-8 ile yazılamayan tek başına vekil kaçışı kaçış olarak kalır.
Sonucun altında istatistikler listelenir: nesne, dizi, anahtar, dize değeri (anahtarlar sayılmaz), sayı, mantıksal değer, null, en derin iç içe geçme ve girdi ile çıktının UTF-8 bayt boyutu. Tek bir sayı ya da dize belgesinin derinliği 0, [] için 1'dir.
Örnekler
Hata konumları. Geçersiz JSON'da araç satırı, sütunu, hatalı metni ve satırın kendisini bir işaretle gösterir. Konumlar aracın kendi testlerinden gelir:
| Girdi | Kod | Satır | Sütun | Bulunan |
|---|---|---|---|---|
| [1,2,] | TRAILING_COMMA | 1 | 5 | , |
| ['a'] | SINGLE_QUOTES | 1 | 2 | ' |
| [01] | INVALID_NUMBER | 1 | 2 | 01 |
| [.5] | INVALID_NUMBER | 1 | 2 | .5 |
| [NaN] | INVALID_NUMBER | 1 | 2 | NaN |
| [True] | INVALID_LITERAL | 1 | 2 | True |
| [1 "a"] | UNEXPECTED_TOKEN | 1 | 4 | " |
| [1,2 | UNEXPECTED_END | 1 | 5 | (girdinin sonu) |
| [1]] | EXTRA_DATA_AFTER_VALUE | 1 | 4 | ] |
Birden çok satırda konum satır sonlarını izler. Aşağıdaki belgede hata 3. satırın 8. sütunundadır, çünkü tru bir sabit değer değildir (araç INVALID_LITERAL bildirir, bulunan tru):
{
"a": 1,
"b": tru
}
- satırın başındaki
// cgibi bir yorum, 3. satır 1. sütundaCOMMENTolarak bildirilir.{"a":1} // x1. satır 9. sütundaCOMMENTverir.["😀", x]için sütun 7 değil 8'dir; çünkü emoji iki UTF-16 kod birimi tutar.
Türkçe metin ve kaçışlar. {"şehir":"İstanbul","ad":"Çağrı","sayı":3} girdisi, Anahtarları sırala açık ve küçültme seçiliyken şunu verir:
{"ad":"Çağrı","sayı":3,"şehir":"İstanbul"}
ş (U+015F), s'den sonra gelir; çünkü sıralama Türk alfabesine değil kod noktasına göredir. ASCII dışı karakterleri kaçırt açılınca aynı çıktı şuna dönüşür:
{"ad":"\u00c7a\u011fr\u0131","say\u0131":3,"\u015fehir":"\u0130stanbul"}
Kod noktası sıralaması büyük harfi küçükten önce koyar: {"b":1,"a":{"z":1,"y":2},"B":3} sıralanınca {"B":3,"a":{"y":2,"z":1},"b":1} olur.
İstatistik. [true,false,null,1,2.5,"a","b",{"k":"v"},[]] belgesinde 2 mantıksal değer, 1 null, 2 sayı, 3 dize değeri (a, b ve v), 1 anahtarlı 1 nesne ve 2 dizi vardır; en derin iç içe geçme 2'dir.
Büyük sayılar. {"id": 9007199254740993, "ok": 1234567890123456} içinde ilk tam sayı, JSON.parse'ın 9007199254740992'ye yuvarlayacağı bir sayı olarak bildirilir. İkincisi 16 haneli olsa da double'a tam sığar; sayılmaz. 1E400 gibi bir sayı olduğu gibi geri yazılır, oysa JSON.parse onu Infinity yapar.
Dikkat edilecekler
- JSON, JavaScript'ten daha katıdır. Tek tırnak, tırnaksız anahtar, yorum, sondaki virgül,
+1,.5,NaN,undefinedve Python tarzıTrueileNonehatadır. JSONC ve JSON5 adlı biçimler bunların bir kısmına izin verir, ama ayrı biçimlerdir ve bu araç onları kabul etmez. Fazlalıkları silin, sonra yeniden yapıştırın. - 9007199254740991'in üstündeki tam sayılar başka yerde risklidir. Veritabanı ve API kimlikleri sık sık bu kadar büyüktür. Bu araç onları korur, ancak aynı metne
JSON.parseuygulayan bir tarayıcı ya da Node.js betiği onları yuvarlar. İstatistiklerdeki büyük tam sayı notuna bakın; biçimi siz belirliyorsanız bu kimlikleri dize olarak taşıyın. - Yinelenen anahtar kabul edilir ama kötü işarettir. İki ayrıştırıcı aynı metni iki farklı belge olarak okuyabilir. Araç en fazla 20 tekrarlanan anahtarı konumuyla listeler, tamamını sayar; kaçışlar çözüldükten sonra eşit olan anahtarlar (
"a"ve"a") yineleme sayılır ve yalnızca aynı nesnenin içindekiler karşılaştırılır. - Sıralama metni değiştirir, veriyi değil. İki belgeyi satır satır karşılaştırmak için kullanın. Yinelenen anahtarlar sıralamada göreli sırasını korur.
- Bayt sırası işareti. En baştaki BOM,
JSON.parseda reddettiği içinBOM_FOUNDolarak bildirilir. Başka yerdeki U+FEFF beklenmeyen karakterdir, dizenin içinde ise sıradan veridir. - Derinlik sınırı. 200 düzeye kadar iç içe geçme kabul edilir; 201. açılış parantezi
MAX_DEPTH_EXCEEDEDolarak bildirilir. - Boyut sınırı. 500.000 karaktere kadar. Boş ya da yalnızca boşluktan oluşan girdi hata değil, yönlendirme gösterir.
- Gizlilik. Metin tarayıcınızda işlenir; yüklenmez, saklanmaz, hiçbir yere gönderilmez.
Sık sorulan sorular
Son güncelleme: 11.10.2026
İlgili araçlar
Metni Base64'e kodlayın ya da geri çözün. Metin UTF-8 olarak dönüştürülür, bu yüzden ş, ğ ve emoji sorunsuz çalışır. URL güvenli alfabe, dolgu ve satır sonu seçilebilir.
Metni URL için yüzde işaretiyle kodlayın ya da çözün: bileşen, tam adres veya form verisi olarak. Yapıştırdığınız http/https adresinin parçalarını görün. Hiçbir şey çekilmez.