JSON adlandırmada bir standart var mı? Alt çizgi ile ayrılmış tüm küçük harf kullanarak çoğu örnek görüyorum (küçük_kutu). Ancak, PascalCase veya camelCase kullanabilir misiniz?
JSON adlandırmada bir standart var mı? Alt çizgi ile ayrılmış tüm küçük harf kullanarak çoğu örnek görüyorum (küçük_kutu). Ancak, PascalCase veya camelCase kullanabilir misiniz?
Yanıtlar:
Hiçbir TEK standarttır, ama ( "Pascal / Microsoft", "Java" (söz 3 stilleri gördük camelCase
) ve "C" (alt çizgi, snake_case
aynı zamanda en az birini daha, -)) kebab-case
gibilonger-name
).
Çoğunlukla söz konusu hizmetin arka plan geliştiricilerinin sahip oldukları şeye bağlı olduğu görülüyor; c / c ++ arka planı olanlar (veya birçok komut dosyası dili, yakut vb. içeren benzer adlandırma kullanan diller) genellikle alt çizgi varyantını seçer; ve benzer şekilde dinlenin (Java vs .NET). Sözü edilen Jackson kütüphanesi, Java fasulyesi adlandırma kuralını (camelCase
)
GÜNCELLEME: Benim "standart" tanımım TEK bir kuraldır. Bu yüzden "evet, birçok standart var" iddiasında bulunabilse de, bana göre Naming Conventions
, hepsi "Standart" standart değil. Bunlardan biri, belirli bir platform için standart olarak kabul edilebilir, ancak JSON'un, çok anlamlı olabilecek veya olmayabilecek platformlar arasında birlikte çalışabilirlik için kullanıldığı göz önüne alındığında.
Bu dokümanda Google JSON Stil Kılavuzu (Google'da JSON API'leri oluşturmaya yönelik öneriler),
Şunları önerir:
Özellik adları camelCased , ASCII dizeleri olmalıdır.
İlk karakter bir harf, alt çizgi (_) veya dolar işareti ($) olmalıdır.
Misal:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
Ekibim bu sözleşmeyi takip ediyor.
Property Name Guidelines->Property Name Format->Choose meaningful property names.
.
Orada JSON anahtarlardan hiçbir standart adlandırma . Spesifikasyonun Nesneler bölümüne göre :
JSON sözdizimi, ad olarak kullanılan dizelere herhangi bir kısıtlama getirmez, ...
Bu da demek camelCase veya snake_case cezası çalışmalıdır.
JSON adlandırma kuralını uygulamak çok kafa karıştırıcıdır. Ancak, bileşenlere ayırırsanız bu kolayca çözülebilir.
JSON oluşturmak için programlama dili
JSON'un kendisinde standart anahtar adı yoktur
JSON ayrıştırma için programlama dili
Java için mevcut JSON kitaplıkları standart dot.syntax kullanmak yerine yalnızca anahtarlara erişmek için yöntemler kullandığından snake_case , Java girişleri olanlar için yine de anlamlı olacaktır . Bu, Java'nın snake_cased'a erişmesinin o kadar çok incitmeyeceği anlamına gelir yapabileceğiniz diğer programlama dili ile karşılaştırıldığında anahtarlarını dot.syntax .
Java paketi örneğiorg.json
JsonObject.getString("snake_cased_key")
Java paketi örneğicom.google.gson
JsonElement.getAsString("snake_cased_key")
JSON uygulamanız için doğru JSON adlandırma kuralını seçmek, teknoloji yığınınıza bağlıdır. Birini kullanabilirsiniz durumlar vardır snake_case , camelCase , ya da başka bir adlandırma kuralı.
Dikkate alınması gereken başka bir şey, JSON-üretecine karşı JSON-ayrıştırıcı ve / veya ön uç JavaScript'e uygulanacak ağırlıktır. Genel olarak, JSON ayrıştırıcı tarafı yerine JSON üreteci tarafına daha fazla ağırlık konulmalıdır. Bunun nedeni, iş mantığının genellikle JSON-jeneratör tarafında bulunmasıdır.
Ayrıca, JSON ayrıştırıcı tarafı bilinmiyorsa, sizin için neyin işe yarayabileceğini beyan edebilirsiniz.
"Person":
değil
Özellikle NodeJS'de benim için, veritabanları ile çalışıyorsam ve alan adlarımın alt çizgileri ayrılmışsa, bunları yapı anahtarlarında da kullanırım.
Bunun nedeni, db alanlarının çok sayıda kısaltma / kısaltmaya sahip olmasıdır, bu nedenle appSNSInterfaceRRTest gibi bir şey biraz dağınık görünüyor, ancak app_sns_interface_rr_test daha güzel görünüyor .
Javascript değişkenleri tüm camelCase ve sınıf isimleri (yapıcılar) ProperCase, bu yüzden şöyle bir şey görürsünüz
var devTask = {
task_id: 120,
store_id: 2118,
task_name: 'generalLedger'
};
veya
generalLedgerTask = new GeneralLedgerTask( devTask );
Ve elbette JSON anahtarları / dizeleri çift tırnaklarla sarılır, ancak daha sonra JSON.stringify kullanın ve JS nesnelerini iletin, bu yüzden endişelenmenize gerek yok.
JSON ve JS adlandırma kuralları arasında bu mutlu ortamı bulana kadar bununla biraz uğraştım.
org.json
, örn gson
. Snake_case verilerini almak o kadar acıtmaz ...JSONObject.get('snake_case_key_here')
İnsanların tüm sözleşmelerden diğerlerine dönüşüm sağlamak için kendi yollarından gitmeleri için yeterli varyasyon var gibi görünüyor: http://www.cowtowncoder.com/blog/archives/cat_json.html
Özellikle, bahsedilen Jackson JSON ayrıştırıcısı tercih eder bean_naming
.
beanNaming
.
JSON için resmi bir adlandırma kuralı olmadığını düşünüyorum, ancak nasıl çalıştığını görmek için bazı endüstri liderlerini takip edebilirsiniz.
Dünyanın en büyük bilişim şirketlerinden biri olan Google'ın JSON stil kılavuzu vardır: https://google.github.io/styleguide/jsoncstyleguide.xml
Avantajlardan yararlanarak, Google'ın tanımladığı diğer stiller kılavuzunu burada bulabilirsiniz: https://github.com/google/styleguide
Diğerlerinin de belirttiği gibi standart yok, bu yüzden kendiniz bir tane seçmelisiniz. İşte bunu yaparken göz önünde bulundurmanız gereken birkaç nokta:
JSON'u tüketmek için JavaScript kullanıyorsanız, her ikisinde de özellikler için aynı adlandırma kuralını kullanmak görsel tutarlılık ve muhtemelen daha temiz kodun yeniden kullanımı için bazı fırsatlar sağlayacaktır.
Kebaptan kaçınmanın küçük bir nedeni, tire işaretlerinin -
değerlerde görünen karakterlerle görsel olarak çakışabilmesidir .
{
"bank-balance": -10
}