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

Значения JSON 1 или 0 - int или boolean

Поддерживает ли JSON все это? Или они представляют собой сочетание целых чисел и логических элементов?

var data =
{
    "zero" : 0,
    "one" : 1,
    "false" : 0,
    "true" : 1,
    "0" : false,
    "1" : true
}
4b9b3361

Ответ 1

JSON - это формат для передачи данных.
Он не имеет понятия равенства.

Анализаторы JSON обрабатывают булевы и числа как различные типы.

Ответ 2

Значения true и false являются действительными логическими значениями, остальные - целыми числами. Подробнее см. http://json.org/.

Ответ 3

Я предпочитаю использовать 0/1 вместо true/false, потому что 0/1 потребляют только 1 байт, а true/false потребляют 4/5 байта.

Ответ 4

Как уже упоминалось, на уровне JSON 0 и false не совпадают; типы данных - это число в сравнении с булевым. Но библиотеки обработки JSON могут делать конверсии; особенно на языках/платформах, которые, например, не имеют родного булева типа. В этом случае может использоваться другое представление (пустая строка или 0 для false).

Кроме того, также возможно, что библиотеки обработки могут принуждать типы: например, если ожидается булевское значение, вместо него могут быть приняты определенные значения номера/строки (или токен JSON 'null). Это довольно часто, из-за различий в выборе типов данных на разных языках.