Подтвердить что ты не робот

Что такое соглашение в JSON для пустого или нулевого?

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

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

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

{
    "items_in_stock": {}
}

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

{
    "items_in_stock": null
}

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Здесь является моим источником.