Так что в основном у меня есть код, который дает мне сообщение от json_last_error ():
$msg = 'Unknown error'; switch (json_last_error()) { case JSON_ERROR_NONE: $msg = null; break; case JSON_ERROR_DEPTH: $msg = 'Maximum stack depth exceeded'; break; case JSON_ERROR_STATE_MISMATCH: $msg = 'Underflow or the modes mismatch'; break; case JSON_ERROR_CTRL_CHAR: $msg = 'Unexpected control character found'; break; case JSON_ERROR_SYNTAX: $msg = 'Syntax error, malformed JSON'; break; case JSON_ERROR_UTF8: $msg = 'Malformed UTF-8 characters, possibly incorrectly encoded'; break; } return $msg;
В целях тестирования я хочу, чтобы все ошибки из этого списка были JSON_ERROR_STATE_MISMATCH
100%, но я не могу повысить JSON_ERROR_STATE_MISMATCH
.
Может ли кто-нибудь помочь дать мне пример с кодировкой или декодированием с любыми параметрами, которые могут вызвать эту ошибку?
$j = '{"j": 1 ] }'; json_decode($j); var_dump(json_last_error() === JSON_ERROR_STATE_MISMATCH); // true
Как я нашел это: просто проверил исходный код 🙂