null vs brakujący klucz w odpowiedzi interfejsu API REST [zamknięte]

40

Powiedz w mojej aplikacji, niektórzy użytkownicy podają nam swoje nazwisko, a inni nie. W odpowiedzi interfejsu API REST, która treść jest preferowana:

Z wartością „null”:

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

Lub po prostu brakujący klucz:

{"firstName": "Bob"}
jtmarmon
źródło

Odpowiedzi:

31

Rozważ usunięcie pustych lub pustych wartości.

Jeśli właściwość jest opcjonalna lub ma pustą lub zerową wartość, rozważ usunięcie właściwości z JSON, chyba że istnieje silny semantyczny powód jej istnienia.

{
  "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
}

Więcej informacji
Przewodnik po stylu Google - puste lub zerowe wartości właściwości
Czy wartości NULL powinny być uwzględnione w odpowiedziach JSON z interfejsu API REST?

Robert Harvey
źródło
dzięki za link, Robert. więc nawet jeśli currentlyPlayingbędzie w niektórych odpowiedziach, a nie w innych, lepiej jest, aby klient sprawdził, czy klucz istnieje, czy nie, niż sprawdzić, czy jest on zerowy?
jtmarmon
nulli undefinedmają prawie takie samo znaczenie w JavaScript, i możesz sprawdzić oba za pomocąif (myProperty == null)
Robert Harvey
w rzeczywistości w moim przypadku klientem może być Java, Object-C lub JavaScript. link w drugim linku (API-craft) wskazuje mi, że null pasuje do naszego semantycznego przypadku użycia, ale przede wszystkim, że powinienem po prostu podjąć decyzję i trzymać się tego: P dzięki jeszcze raz
jtmarmon
Proste: jeśli aplikacja musi rozróżniać różne wartości, serwer musi podawać różne wartości, w przeciwnym razie nie musi i nie powinien. Czy Twoja aplikacja musi odróżniać klucz, który nie jest obecny, klucz ma pusty ciąg znaków jako wartość, a klucz o wartości zerowej?
gnasher729
3
Odpowiedź w tym poście adresów kilka powodów dobre, dlaczego nie powinno się usuwać pola null.
Dave New