9 puan yazan GN⁺ 2024-12-09 | 2 yorum | WhatsApp'ta paylaş
  • JSON5, JSON dosya biçimini genişleterek insanların doğrudan yazıp bakımını daha kolay yapabilmesi için oluşturulmuş bir biçim
    • Makineler arası iletişim amacıyla kullanılmaz
    • 2012'de başladı; 2022 itibarıyla haftada 65 milyondan fazla kez indiriliyor ve npm'de en çok bağımlılık alınan paketlerin ilk %0,1'lik diliminde yer alıyor
    • Chromium, Next.js, Babel, Retool, WebStorm gibi büyük projelerde benimsenmiş durumda
    • macOS ve iOS gibi Apple platformlarında varsayılan olarak desteklenir
  • JSON5'in özellikleri
    • JSON'un üst kümesidir ve ECMAScript 5.1'in bazı sözdizimini içerir
    • JSON5 dosyaları her zaman geçerli bir ES5 dosyasıdır
  • Genişletilmiş ECMAScript 5.1 özellikleri
    • Nesneler
      • Nesne anahtarları ECMAScript 5.1 IdentifierName olabilir
      • Nesnelerde tek bir sondaki virgüle izin verir
    • Diziler
      • Dizilerde tek bir sondaki virgüle izin verir
    • Dizgeler
      • Dizgeler tek tırnak içinde yazılabilir
      • Satır sonu karakteri escape edilerek birden fazla satıra yayılabilir
      • Karakter escape'leri içerebilir
    • Sayılar
      • Onaltılık biçimde ifade edilebilir
      • Başta veya sonda ondalık ayırıcı içerebilir
      • IEEE 754 pozitif sonsuzluk, negatif sonsuzluk ve NaN içerebilir
      • Açık bir artı işaretiyle başlayabilir
    • Yorumlar
      • Tek satırlı ve çok satırlı yorumlara izin verir
    • Boşluklar
      • Ek boşluk karakterlerine izin verir
  • API
    • JSON5.parse(): JSON5 dizgesini parse ederek JavaScript değeri veya nesnesi oluşturur
    • JSON5.stringify(): JavaScript değerini JSON5 dizgesine dönüştürür
  • CLI
    • JSON5'i JSON'a dönüştüren veya JSON5 belgelerinin sözdizimini doğrulayan bir CLI sunar
  • ECMAScript uyumluluğu
    • JSON5, ES5 ile tamamen uyumlu olacak şekilde tasarlanmıştır; ancak U+2028 ve U+2029 karakterlerine ES5'te izin verilmez
    • Bu karakterler ES2019'da izinli hale geldiği için JSON ve JSON5, ES2019 ile tamamen uyumludur
  • Lisans
    • MIT lisansı altında sunulur

2 yorum

 
GN⁺ 2024-12-09
Hacker News görüşleri
  • JSON yalnızca çift tırnaklı dizeleri destekleyerek tırnak kullanımıyla ilgili tartışmaları ortadan kaldırma özelliğine sahip. Yorumlar ve sondaki virgüller eklemek için JSONC kullanılabilir
    • JSONC, Visual Studio Code'da ayar biçimi olarak kullanılıyor
  • JSON5 adlandırmasının etik olmadığını düşünenler var. Orijinal yazarın onayı olmadan bir sonraki sürümmüş izlenimi vermesi uygunsuz görülüyor
  • JSON5'i tercih edenler var ve YAML'ın okunabilirliğinin düşük olduğunu düşünüyorlar. YAML dosyalarını anlamak için sık sık JSON dönüştürme araçları kullanılıyor
  • JSON basit olduğu için yaygın biçimde kullanılıyor. XML ya da YML gibi daha karmaşık alternatiflerin uygun olmadığı düşünülüyor
    • Karmaşık biçimler kullanmak sorunlara yol açabilir
  • EDN'nin Clojure ekosistemi dışında yaygın olarak benimsenmemiş olması üzücü bulunuyor
    • Bir standart yok ama kullanıcılar bunu sorunsuz şekilde kullanıyor
  • JSON'un özel karakter sorununa dikkat çekiliyor. JSON UTF-8 olarak tanımlanmış olsa da 7 bit ASCII kontrol karakterlerinin yanlış yazıldığı bir hata var
    • RFC'nin 33 kontrol karakterini içermesi gerekiyor
  • TOML tavsiye ediliyor; insan tarafından okunabilirlik ile araç desteğinin mükemmel birleşimi olduğu düşünülüyor
  • JSON/YAML alternatiflerinde daha fazla türü desteklemenin iyi bir fikir olmadığı düşünülüyor
    • NestedText neredeyse ideal, ancak birden fazla sözdizimi kullanıyor ve yorumları veri modeline dahil etmiyor
  • JSON5'in BMP dışındaki Unicode karakterler için \U kaçış dizisini getirmemiş olmasına dikkat çekiliyor
    • UTF-16 vekil çiftlerini kullanmak zahmetli ve Unicode standardıyla uyumlu değil
  • JSON'da yorumlar ve yerel datetime türü dışında başka özelliklere ihtiyaç olmadığı düşünülüyor
    • Sondaki virgüller yararlı bulunuyor