null vs REST API Yanıtında eksik anahtar [kapalı]


40

Diyelim ki uygulamamda, bazı kullanıcılar bize soyadlarını veriyor, bazıları ise kullanmıyor. Bir REST API yanıtında, hangi gövde tercih edilir:

"Boş" bir değerle:

{"firstName": "Bob",
 "lastName": null}

Ya da sadece eksik bir anahtar:

{"firstName": "Bob"}

Yanıtlar:


31

Boş veya boş değerleri çıkarmayı düşünün.

Bir özellik isteğe bağlıysa veya boş veya boş bir değere sahipse, varlığı için güçlü bir anlamsal neden olmadıkça özelliği JSON'dan çıkarmayı düşünün.

{
  "volume": 10,

  // Even though the "balance" property's value is zero, it should be left in,
  // since "0" signifies "even balance" (the value could be "-1" for left
  // balance and "+1" for right balance.
  "balance": 0,

  // The "currentlyPlaying" property can be left out since it is null.
  // "currentlyPlaying": null
}


Google Stil Kılavuzunu Okuma - Boş veya Boş Özellik Değerleri
REST API'sinin JSON yanıtlarında boş değerler bulunmalı mı?


Bağlantı için teşekkürler, Robert. bu nedenle currentlyPlaying, bazı yanıtlarda olsa da diğerinde olmasa bile, anahtarın boş olup olmadığını kontrol etmek yerine müşterinin anahtar olup olmadığını kontrol etmesi tercih edilir.
jtmarmon

nullve undefinedsahip neredeyse JavaScript aynı anlama ve her ikisi için de kontrol edebilirsiniz kullanarakif (myProperty == null)
Robert Harvey

Aslında benim durumumda müşteri java, objektif-c veya javascript olabilir. ikinci link içerisindeki link (API-craft) bana
null'un

Basit: Uygulamanın farklı değerler arasında ayrım yapması gerekiyorsa, sunucunun farklı değerler sağlaması gerekir, aksi halde gerekmemeli ve olmamalıdır. Uygulamanızın bulunmayan bir anahtar, bir anahtarın değer olarak boş bir dizesi ve boş bir değeri olan bir anahtar arasında ayrım yapması gerekiyor mu?
gnasher729

3
Bu yazı içinde cevap bazı iyi nedenler null alanları kaldırmak olmamalıdır neden olarak adresleri.
Dave New
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.