Значения JSON 1 или 0 - int или логическое значение - PullRequest
55 голосов
/ 01 июля 2011

JSON обрабатывает все это одинаково? Или это смесь целых чисел и логических значений?

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

Ответы [ 4 ]

87 голосов
/ 01 июля 2011

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

63 голосов
/ 01 июля 2011

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

JSON парсеры обрабатывают логические значения и числа как отдельные типы.

28 голосов
/ 10 июля 2013

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

9 голосов
/ 01 июля 2011

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

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

...