JSON tuşlarında tire kullanmak kötü bir uygulama mıdır?


12

Tire (kebab-case) kullanan JSON anahtarlarına erişme etrafında dönen birçok soru görüyorum, ancak şimdi kendimi sadece anahtarlarımda camelCase veya snake_case'e yapışmam gerektiğini merak ediyorum. Tirelerin, diller arasında taşındığında karmaşık eşlemeler oluşturabileceğini de biliyorum. Bazı JSON serisini kaldırmak kütüphaneler bu anahtarları bir camelCase tarzı dönüştürmek gördüm.

Misal:

var something = {
  "some-value": 'thing'
}

Vs

var something = {
  "someValue": 'thing',
  "some_other_value": 'thing_two'
}

4
REST'in faydalı yük biçimleri hakkında söyleyecek bir şeyi yoktur.
Eric Stein

2
Neden JSON'da kebab-case kullanıyorsunuz? İnsanlar genellikle JSON için camelCase'i kullanır, çünkü programlama ortamının adlandırma kurallarına uymak her zaman iyi bir uygulamadır ve JavaScript'teki değişkenler için camelCase'i kullanmak standart bir uygulamadır. JavaScript ile iletişim kurmak için JSON kullandığınız varsayımına rağmen.
Alternatex

1
Sorunun javascript ile etiketlendiğini görüyorum, ancak sorunun kendisi farklı diller / kütüphaneler arasındaki bir API ile ilgili gibi görünüyor. Javascript ile ilgileniyorsanız, nokta gösteriminin tire ile çalışmadığını unutmayın.
Izkata

5
JSON dilden bağımsız olduğu ve bu nedenle belirli bir dilin sözdizimi ile sınırlandırılmaması gerektiğinden, bu gerçekten kötü bir uygulama değildir. Bununla birlikte, yalnızca alfasayısal karakterleri kullanmak mantıklıdır, çünkü bu doğrudan tüm ana dilde tanımlayıcılarla eşleştirilebilir, bu nedenle bu en az miktarda harita sorununa yol açar.
JacquesB

1
@Alternatex: "kebab-case" için +1 :-)
gnasher729

Yanıtlar:


13

Geçerli UTF-8 olduğu sürece sıfır kod noktası içermediği sürece JSON anahtarları olarak herhangi bir şey kullanabilirsiniz ve anahtarı, seçtiğiniz programlama dilinde bir dize olarak temsil edebilmeniz yararlı olacaktır. Aynı dizenin farklı Unicode temsillerini kullanmamanızı tavsiye edebilirim (örneğin "Ä" bir veya iki kod noktası olarak yazılmış).

Bazı yorumları okuma: Bazı insanlar JSON sözlüklerindeki anahtarlarla eşleşen örnek değişkenleri olan sınıflar oluşturmaya çalışıyor gibi görünüyor. COBOL yazmazsanız anahtarınız "değer" ise hangisi işe yaramaz. Bence bu yanlış yönlendirilmiş. Yolu tasarlanmış modeli sınıfları ben onları istiyorum. JSON sadece model sınıflarını doldurmak için kullanılır. Sunucu adamlar anahtarlar için kullanmak ve içine koymak için karar ne olursa olsun alacağım benim modeli nesneler.


1
urg, tüketen programınızın json tuşlarına nasıl eriştiği sorusunu yalvarıyorsunuz. Genellikle bu, json'u bir nesne olarak ayrıştırarak yapılır. Bunu engelleyen hiperler veya diğer karakterleri kullanmak, tüketicileriniz için hayatı zorlaştırır
Ewan

Ve bu geçerli: {"❓": "✅"}
Vinicius Brasil

1
Kısa çizgiler bir şeyi nasıl önler? Bir sözlük alıyorum ve bir anahtar olarak "bazı anahtar" kullanabilirsiniz, hatta "❓" anahtar olarak kullanabilirsiniz.
gnasher729

9

Entegre ettikleri dilde kullanım için uygun olmayan alan adları arasında haritalama yapabilenden daha fazla sayıda JSON serileştirme sistemi vardır. Çoğu durumda, kullanımı zor değildir ve sadece biraz ekstra çaba gerektirir. İdeal bir dünyada, bunu yapmak zorunda kalmayacaksınız, ancak API'nız zaten tire kullanıyorsa, değiştirmek hastalığa göre daha kötü olacaktır. Ayrıca, tire kullanımının belirli dillerdeki en yaygın stil olduğunu, özellikle de LISP tabanlı olanları kullandığını unutmayın, bu nedenle muhtemelen API'nızın tüketicilerinin başka bir biçim yerine çizgi görmekten mutlu olan sessiz bir azınlığı vardır.


İçinde fikir bulduğum en kısa sürede oylayacağım, Teşekkürler.
Matt Oaxaca

1

Sanayide biraz zaman geçirdikten ve birkaç sistem çalıştıktan sonra. JSON anahtarları için en iyi uygulama veya uygun kasa olduğunu sanmıyorum. Herhangi bir biçimlendirmenin (kasa / kod stili / vb.) En önemli yönü tutarlılık ve takımın benimsenmesidir.

Kod tabanı parçalanmış ve tutarsızsa, bir ekip olarak bir araya gelin ve tutarlı bir stil üzerinde anlaşın, ardından formasyonu toplu olarak polisleştirin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.