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).
Это довольно часто, из-за различий в выборе типов данных на разных языках.