Что такое соглашение в JSON для пустых против нуля? - PullRequest
47 голосов
/ 08 марта 2012

Я знаю, что в большинстве сценариев программирования предпочтение отдается пустым коллекциям, а не нулевым коллекциям при наличии 0 элементов. Однако большинство языков, использующих JSON (например, JavaScript), будут обрабатывать пустые списки / объекты как истины, а нулевые - как ложные. Например, это может быть как истина, так и объект в JavaScript:

{
    "items_in_stock": {"widgets":10, "gadgets": 5}
}

Но это также верно:

{
    "items_in_stock": {}
}

И это неверно:

{
    "items_in_stock": null
}

Существует ли соглашение о пустых объектах / списках для JSON? А что насчет чисел, логических значений и строк?

Ответы [ 4 ]

58 голосов
/ 08 марта 2012

Хорошая практика программирования - возвращать пустой массив, если ожидаемый тип возвращаемого значения - массив.Это гарантирует, что получатель json может немедленно обработать значение как массив и не должен сначала проверять, является ли оно нулевым.То же самое и с пустыми объектами ({}).Строки, логические и целые числа не имеют «пустой» формы, поэтому там можно использовать нулевые значения.

Не поверьте мне на слово.В превосходной книге Джошуа Блоха «Эффективная Java» он описывает некоторые очень хорошие общие практики программирования (часто также применимые к другим языкам программирования).Возврат пустых коллекций вместо нулей - одна из них.Вот ссылка на эту часть его книги: http://jtechies.blogspot.nl/2012/07/item-43-return-empty-arrays-or.html

4 голосов
/ 08 марта 2012

"JSON имеет специальное значение, называемое null, которое может быть установлено для любого типа данных, включая массивы, объекты, числовые и логические типы."

"Концепция пустого JSON применяется для массивов и объектов ...Объект данных не имеет понятия пустых списков. Следовательно, для объекта данных не выполняется никаких действий для этих свойств. "

Здесь - мой источник.

0 голосов
/ 12 марта 2019

null может получить доступ только через объект json, даже вы можете сказать, что json работает только с отформатированным свойством объекта.Так что если вы вызываете с нулевым значением объекта, он будет вызывать.

"items_in_stock": {"null":""}

Я не пробую это, но в соответствии с концепцией JSON, я думаю, что это работает:)

0 голосов
/ 23 февраля 2019

Пустой массив для пустых коллекций и null для всего остального.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...