В PHP вы можете использовать json_encode
для кодирования объекта в виде строки json.
$string = json_encode($some_object);
Тем не менее, PHP имеет стандартный набор типов данных, которые не считаются объектами (целые числа, строки и т. д.). Если вы передаете строку в json_encode
, это возвращает строку, содержащую оператор javascript, который можно использовать для определения строки.
В менее неуклюжей формулировке это
echo json_encode("Hello
world, please don't " . '"' . "misuse quote's for emphasis " . "or possessive apostrophes' ");
выведет это (готовая строка javascript)
"Hello \n\tworld, please don't \"misuse quote'sor possessive apostrophes' "
Является ли такое поведение частью спецификации JSON? То есть определяет ли JSON или рекомендует, как реализация должна обрабатывать преобразование собственных, необъектных типов данных? Или вообще иметь мнение о конверсии? Мое чтение RFC оставило это неоднозначным, но я дерьмо при интерпретации этих вещей.
Я спрашиваю, потому что меня интересует вероятность того, что это поведение исчезнет из будущей версии функции. т. е. если это где-то кодифицировано в спецификации, вероятность того, что она исчезнет, меньше, чем если бы она была единичной, которую кто-то решил добавить во время разработки.