Ответ 1
Из RFC:
Текст JSON представляет собой сериализованный объект или массив.
JSON-text = object / array
Большинство парсеров не принимают ничего как root, не являющегося объектом или массивом. Только менее строгие парсеры согласятся с тем, что ваша строка JSON содержит только true
.
Итак, ваши варианты
- не использовать JSON
- чтобы обернуть ваше логическое значение в объекте:
{"result":true}
или массив:[true]
Update:
Ситуация изменилась. Более новые версии спецификации JSON (см. этот) явно принимают любое сериализованное значение как корень из документа:
Текст JSON является сериализованным значением. Обратите внимание, что некоторые предыдущие спецификации JSON ограничивали текст JSON как объект или массив. Реализации, которые генерируют только объекты или массивы, где Вызывается текст JSON, который будет взаимодействовать в том смысле, что все реализации будут воспринимать их как соответствующие тексты JSON.
Это означает, что теперь законно допустимо использовать логическое значение как уникальное значение. Но, конечно, не все обновляемые библиотеки обновляются, что подразумевает использование чего-либо другого, кроме объекта или массива, все еще может быть проблематичным.