Yorumlu JSON
JSONC (Yorumlu JSON), standart JSON'u JavaScript tarzı yorumlara izin verecek şekilde genişletir. Birçok geliştirme aracı, yorumların ayarları belgelendirmeye yardımcı olduğu yapılandırma dosyaları için JSONC kullanır. Bu ayrıştırıcı, veri yapısını koruyarak geçerli JSON üretmek için yorumları temizler.
Spesifikasyonlar
Yaygin Kullanim Alanlari
- TypeScript/JavaScript projeleri için tsconfig.json ve jsconfig.json dosyalarını ayrıştırma
- VS Code settings.json ve uzantı yapılandırmalarını okuma
- Cloudflare wrangler.jsonc yapılandırma dosyalarını işleme
- Satır içi belgelendirme ile ESLint, Prettier ve diğer araç yapılandırmalarını düzenleme
Ozellikler
- Tek satırlı yorumları ayrıştırma (// yorum)
- Çok satırlı yorumları ayrıştırma (/* yorum */)
- Sondaki virgülleri işleme (JSONC dosyalarında yaygın)
- Geçerli JSON çıktısı üretmek için yorumları temizleme
- Tüm standart JSON Ayrıştırıcı özellikleri (ağaç görünümü, dönüştürme)
Ornekler
TypeScript Yapılandırması
Deneyin →Derleyici seçeneklerini açıklayan yorumlar içeren bir tsconfig.json dosyası.
{
// Compiler options for the project
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
/* Enable all strict type checking options */
"strict": true
}
}Ipuclari
- VS Code, TypeScript ve birçok modern araç JSONC'yi yerel olarak destekler.
- Yapılandırmayı paylaşırken alıcıların araçlarının yorumları destekleyip desteklemediğini dikkate alın.
- Araçlar katı JSON gerektirdiğinde yorumları temizleyerek standart JSON'a dönüştürün.
Anlama Yorumlu JSON
JSONC (Yorumlu JSON), standart JSON'un JavaScript tarzı tek satırlı (//) ve çok satırlı (/* */) yorumlara ve ayrıca diziler ve nesnelerdeki son öğeden sonra virgüle izin veren bir uzantısıdır. Resmi bir standart olmasa da JSONC, satır içi belgelendirmenin sürdürülebilirliği artırdığı geliştirici odaklı yapılandırma dosyaları için fiili format haline gelmiştir.
Microsoft, settings.json, keybindings.json, launch.json ve extensions.json için kullanan Visual Studio Code aracılığıyla JSONC'yi popülerleştirmiştir. TypeScript'in tsconfig.json ve JavaScript'in jsconfig.json dosyaları JSONC dosyalarıdır; .json uzantısı kullanan birçok ESLint, Prettier ve Babel yapılandırma dosyası da öyle. Cloudflare'in wrangler.jsonc dosyası, yorum desteğini belirtmek için açıkça .jsonc uzantısını kullanır.
JSONC'nin düz JSON'a göre temel avantajı belgelendirmedir. Yapılandırma dosyaları genellikle amacı yalnızca anahtar adından anlaşılmayan ayarlar içerir. Yorumlar, geliştiricilerin bir ayarın neden var olduğunu, geçerli değerlerin neler olduğunu ve değişikliklerin sonuçlarının ne olabileceğini açıklamasına olanak tanır. Sondaki virgüller, son öğenin diğerleriyle aynı formata sahip olmasına izin vererek sürüm kontrol gürültüsünü azaltır; böylece yeni bir öğe eklendiğinde diff'te iki yerine yalnızca bir değişen satır görünür.
Altyapıda JSONC ayrıştırıcıları, sonucu standart bir JSON ayrıştırıcısına göndermeden önce yorumları ve sondaki virgülleri temizleyerek çalışır. Bu, veri modelinin JSON ile aynı olduğu anlamına gelir - yorumlar programlar için değil, insanlar için meta verilerdir. Katı JSON uyumluluğu gerektiren araçlar için JSONC'yi JSON'a dönüştürürken yorumlar basitçe kaldırılır. VS Code'da kullanılan Microsoft'un node-jsonc-parser kütüphanesi, JSONC ayrıştırma için referans uygulamasıdır.
JSONC herhangi bir RFC veya ECMA spesifikasyonu tarafından tanımlanan resmi bir standart değildir. VS Code ve TypeScript aracılığıyla Microsoft tarafından popülerleştirilen, tek satırlı yorumlar, çok satırlı yorumlar ve sondaki virgüller için davranışı referans uygulama olan jsonc-parser kütüphanesi tarafından iyi tanımlanmış bir kuraldır. JSONC'yi destekleyen diğer araçlar - ESLint, Prettier ve çeşitli editörler - aynı kuralları takip eder. Yaygın JSONC dosyaları arasında tsconfig.json ve jsconfig.json (TypeScript/JavaScript), VS Code ayar dosyaları (settings.json, launch.json, tasks.json, keybindings.json), wrangler.jsonc (Cloudflare Workers), devcontainer.json (VS Code Dev Containers) ve diğer çeşitli araç yapılandırmaları bulunur. Geliştiriciler tarafından düzenlenen ve yorumlardan yararlanabilecek herhangi bir JSON dosyası muhtemelen JSONC'yi destekler.
JSONC yalnızca açık JSONC desteğine sahip araçlar tarafından okunan yapılandırma dosyaları için kullanılmalıdır. API yanıtları, veri depolama ve hizmetler arası iletişim her zaman standart JSON kullanmalıdır, çünkü çoğu JSON ayrıştırıcısı yorumları söz dizimi hatası olarak reddeder. Bir JSONC yapılandırma dosyasını standart bir JSON ayrıştırıcısıyla programlı olarak işlemek için önce JSONC'ye duyarlı bir kütüphane kullanarak yorumları temizleyin.
JSONC, JSON'un daha kapsamlı bir üst kümesi olan JSON5'ten daha tutucudur. JSONC yalnızca yorumlar ve sondaki virgüller eklerken, JSON5 ayrıca tek tırnaklı dizelere, tırnaksız nesne anahtarlarına, onaltılık sayılara, baştaki ve sondaki ondalık noktalara, Infinity ve NaN değerlerine ve çok satırlı dizelere izin verir. JSONC'nin geliştirici ekosisteminde daha geniş araç desteği varken, JSON5 Babel'in babel.config.json5 gibi belirli yapılandırma dosyalarında kullanılır ancak genel olarak daha dar bir benimsemeye sahiptir.