JSON—JavaScript Object Notation—yapılandırılmış veri alışverişi için her yerde bulunan, metin tabanlı bir formattır. Hem IETF tarafından RFC 8259 olarak hem de Ecma International tarafından ECMA-404olarak standartlaştırılmıştır; bunlar birlikte modern API'leri, günlükleri, yapılandırmaları ve veritabanlarını güçlendiren kompakt, dilden bağımsız sözdizimini tanımlar.
Bir JSON değeri ya bir nesne, dizi, dize, sayı ya da true, false veya null değişmezlerinden biridir; nesneler dizeleri değerlere eşler ve diziler sıralı değerler tutar—yapısal karakterlerin etrafında önemsiz boşluklara izin verilir (RFC 8259, ECMA-404). JSON, JavaScript'ten kaynaklanmasına rağmen, dilden bağımsızdır ve neredeyse her yerde desteklenir (MDN: JSON). Kablo üzerinde, fiili ve önerilen kodlama UTF-8'dir (RFC 8259 §8.1). Ekstra birlikte çalışabilirlik güvenliği için, I-JSON profili (RFC 7493) kodlamalar ve sayısal aralıklar etrafındaki kuralları sıkılaştırır.
JavaScript'te, genel JSON nesnesi iki beygir gücü sunar:JSON.parse (isteğe bağlı bir reviver ile) ve JSON.stringify (güzel yazdırma için değiştirici/boşluk bırakma ile), MDN'de belgelendiği gibi (parse, stringify).
JSON'un sayı dilbilgisi ondalıktır, ancak belirtim kesinlik veya tamsayı/kayan nokta ayrımlarını dikte etmez. Uygulamalar bunları nasıl temsil edeceklerini seçerler (RFC 8259 §6). JavaScript ve Node.js'de, Number IEEE-754 çift duyarlılıktır, yani yalnızca [−(2^53−1), 2^53−1] içindeki tamsayılar tam olarak güvenlidir—bkz. Number.MAX_SAFE_INTEGER ve BigInt türü. Bu nedenle genel API'ler genellikle kimlikleri dize olarak gönderir ve “güvenli tamsayıları” açıkça doğrular.
Kullanım olgunlaştıkça, JSON'u yerinde adreslemek ve değiştirmek için standartlar ortaya çıktı. JSON İşaretçisi (RFC 6901) değerleri bulmak için küçük, eğik çizgiyle ayrılmış bir sözdizimidir (örneğin, /a/b/0) ve ~ ve / için kaçış kuralları vardır. JSON Yaması (RFC 6902) kısmi güncellemeleri sıralı işlemler (add, remove, replace, move, copy, test) olarak modeller ve application/json-patch+json olarak seyahat eder. Daha basit farklar için, JSON Birleştirme Yaması (RFC 7386) belge şeklinde bir birleştirme kullanır: mevcut alanlar eklenir/değiştirilir; bir alanı null olarak ayarlamak onu siler. Birçok çerçeve, kutudan çıktığı gibi bir veya her iki formu da destekler.
JSON'un kendisi şemasızdır, ancak ekosistemler doğrulama, belgeleme ve kod oluşturma için şemalara dayanır. JSON Şeması 2020-12 ailesi, type, properties, items ve kompozisyon anahtar kelimeleri gibi kısıtlamaları belirtir ve OpenAPI 3.1ile uyumludur. Kod oluşturma merkezli iş akışları için, JSON Tür Tanımı (RFC 8927) ana akım tür sistemlerine tahmin edilebilir şekilde eşlenen, kasıtlı olarak daha az ifade gücüne sahip bir dil sunar.
Klasik JSON, yük başına bir tam metin bekler, bu da akış günlüklerini ve uzun ömürlü yanıtları karmaşıklaştırır. İki desen yardımcı olur:
application/json-seq olarak kaydedilmiştir.Bant genişliği veya hız baskın olduğunda, "ikili JSON" biçimleri JSON'un veri modelini korurken verimlilik için insan okunabilirliğinden ödün verir:
JSON yalnızca metin olduğu için, çoğu risk onu nasıl taşıdığınızdan ve işlediğinizden kaynaklanır:
<script> aracılığıyla veri isteme bir geri arama ile) çapraz kaynak istekleri için bir CORS öncesi geçici çözümdü ancak tehlikelidir—keyfi komut dosyası yürütür. Gerçek application/json yanıtlarıyla CORS'u tercih edin (OWASP: JSONP Kötüye Kullanımı).JSON, RFC 4627 (2006)altında piyasaya sürüldü; kayıtlı medya türü application/json'dur ve belirtimi şimdi RFC 8259'a işaret etmektedir. JSON yanıtlarındaki "charset" parametreleri genellikle gereksizdir çünkü UTF-8 genel internette varsayılandır.
Geliştiriciler genellikle yapılandırmalarda yorumlar, sonda virgüller veya tek tırnaklı dizeler isterler. Bu, standart JSON'un dışındadır, ancak JSON5 insan tarafından düzenlenen dosyalar için iyi belgelenmiş bir üst küme sağlar. Her iki ucu da kontrol etmiyorsanız genel API'ler üzerinden JSON5 göndermekten kaçının.
JSON'un başarısı, küçük bir yüzey alanından, geniş dil desteğinden ve dağıtılmış sistemlerin dağınık gerçeklerini kapsayan bir dizi bitişik standarttan—işaretçiler, yamalar, şemalar, diziler—gelir. Temelleri (sözdizimi, kodlama, sayılar) anlayın, doğru bitişik standartlara dayanın ve yığınlar ve hizmetler arasında temettü ödemeye devam edecektir (RFC 8259, ECMA-404, RFC 6901, RFC 6902, RFC 7386, JSON Schema, JTD, RFC 7464, NDJSON).
JSON (JavaScript Nesne Gösterimi), insanların okuması ve yazması kolay ve makinelerin ayrıştırması ve oluşturması kolay hafif bir veri değişim biçimidir. Web uygulamalarında veri iletmek için yaygın olarak kullanılır.
JSON'u biçimlendirmek, uygun girinti ve satır sonları ekleyerek insanlar tarafından okunabilir hale getirir. Bu, küçültülmüş veya sıkıştırılmış JSON verileriyle çalışırken, hata ayıklarken veya API yanıtlarını incelerken özellikle yararlıdır.
JSON doğrulama, JSON dizenizin JSON spesifikasyonuna uygun olup olmadığını kontrol eder. Eksik virgüller, kapatılmamış parantezler veya uygunsuz tırnak işaretleri gibi sözdizimi hatalarını tanımlar ve hataları erken yakalamanıza yardımcı olur.
Kod görünümü, biçimlendirilmiş JSON'u sözdizimi vurgulamasıyla metin olarak görüntüler, bir kod düzenleyicisinde göründüğü şekilde. Ağaç görünümü, JSON'u iç içe nesneleri ve dizileri genişletebileceğiniz ve daraltabileceğiniz etkileşimli, daraltılabilir bir yapı olarak sunar.
Evet! Tüm JSON biçimlendirme ve doğrulama tamamen tarayıcınızda gerçekleşir. Verileriniz asla bilgisayarınızdan ayrılmaz, tam gizlilik ve güvenlik sağlar.
Evet, 'Dosya aç' düğmesini kullanarak bir JSON dosyası yükleyebilirsiniz. Araç dosyayı okuyacak ve biçimlendirilmiş çıktıyı hemen görüntüleyecektir.
Yaygın JSON hataları şunlardır: anahtar-değer çiftleri arasında eksik virgüller, dizeler için çift tırnak yerine tek tırnak kullanımı, sondaki virgüller, kapatılmamış parantezler veya küme parantezleri ve tırnak işareti olmayan anahtarlar.
Evet, biçimlendirilmiş JSON'u panonuza kopyalamak için 'Kopyala' düğmesini kullanın. Bu, temizlenmiş JSON'u kodunuza veya belgelerinize yapıştırmak için yararlıdır.