Ответ 1
JSON - это формат для передачи данных.
Он не имеет понятия равенства.
Анализаторы JSON обрабатывают булевы и числа как различные типы.
Поддерживает ли JSON все это? Или они представляют собой сочетание целых чисел и логических элементов?
var data =
{
"zero" : 0,
"one" : 1,
"false" : 0,
"true" : 1,
"0" : false,
"1" : true
}
JSON - это формат для передачи данных.
Он не имеет понятия равенства.
Анализаторы JSON обрабатывают булевы и числа как различные типы.
Значения true
и false
являются действительными логическими значениями, остальные - целыми числами. Подробнее см. http://json.org/.
Я предпочитаю использовать 0/1 вместо true/false, потому что 0/1 потребляют только 1 байт, а true/false потребляют 4/5 байта.
Как уже упоминалось, на уровне JSON 0 и false не совпадают; типы данных - это число в сравнении с булевым. Но библиотеки обработки JSON могут делать конверсии; особенно на языках/платформах, которые, например, не имеют родного булева типа. В этом случае может использоваться другое представление (пустая строка или 0 для false).
Кроме того, также возможно, что библиотеки обработки могут принуждать типы: например, если ожидается булевское значение, вместо него могут быть приняты определенные значения номера/строки (или токен JSON 'null). Это довольно часто, из-за различий в выборе типов данных на разных языках.