Давайте начнем с двух небольших тестов:
$original = [0 => 'a', 1 => 'b']; var_dump((json_decode(json_encode($original))));
возвращается
array(2) { // array [0]=> // integer like original string(1) "a" [1]=> // integer like original string(1) "b" }
Таким образом, мы можем видеть здесь, что параметр- assoc
параметр (второй параметр в функции json_decode
) не установлен (по умолчанию – false
), а пара json_decode-json_encode
восстанавливает оригинал, как следует.
$original = [1 => 'a', 2 => 'b']; var_dump((json_decode(json_encode($original))));
возвращается
object(stdClass)#1 (2) { // object ["1"]=> // string, instead of integer string(1) "a" ["2"]=> // string, instead of integer string(1) "b" }
Здесь снова assoc
false
, но пара json_decode-json_encode
не может восстановить оригинал, если мы явно не установим значение assoc
в true
.
Вопрос: Я работаю над пользовательским процессом сериализации (отличным от функций serialize
и unserialize
PHP). Я решил использовать json_decode-json_encode
и я обнаружил, что не могу полагаться на настройки по умолчанию, например, assoc=false
. json_
ли вы о каких-либо других json_
с json_
семейства json_
которые могут привести к возникновению проблемы, когда я не смогу восстановить исходные данные и структуру?