ноль против отсутствующего ключа в ответе REST API [закрыто]

41

Скажем, в моем приложении некоторые пользователи дают нам свою фамилию, а другие нет. В ответе REST API, какое тело является предпочтительным:

С нулевым значением:

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

Или просто отсутствующий ключ:

{"firstName": "Bob"}
jtmarmon
источник

Ответы:

31

Попробуйте удалить пустые или нулевые значения.

Если свойство является необязательным или имеет пустое или нулевое значение, рассмотрите возможность удаления свойства из JSON, если только нет веской семантической причины его существования.

{
  "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 - Пустые или нулевые значения свойств
Следует ли включать нулевые значения в ответы JSON от REST API?

Роберт Харви
источник
спасибо за ссылку, Роберт. поэтому, даже если currentlyPlayingв некоторых ответах будут присутствовать ответы, а не в других, предпочтительно, чтобы клиент проверял, есть ли ключ, или нет, а не проверял, является ли он нулевым?
Jtmarmon
nullи undefinedимеют почти одинаковое значение в Javascript, и вы можете проверить оба с помощьюif (myProperty == null)
Роберт Харви
Ну, на самом деле в моем случае клиент может быть Java, Objective-C или JavaScript. ссылка во второй ссылке (API-craft) указывает мне, что null соответствует нашему семантическому варианту использования, но в основном я должен просто принять решение и придерживаться его: P еще раз спасибо
jtmarmon
Все просто: если приложению необходимо различать разные значения, сервер должен предоставлять разные значения, иначе это не нужно и не должно. Должно ли ваше приложение различать ключ, которого нет, ключ имеет пустую строку в качестве значения и ключ, имеющий нулевое значение?
gnasher729
3
В ответе на этот пост рассматриваются некоторые веские причины, по которым вам не следует удалять пустые поля.
Дэйв Нью