JSON_ERROR_STATE_MISMATCH和JSON_ERROR_SYNTAX php常量之间的区别

时间:2017-03-17 15:33:24

标签: php json constraints json-deserialization

JSON_ERROR_STATE_MISMATCH和JSON_ERROR_SYNTAX常量之间有什么区别? docs表示JSON_ERROR_STATE_MISMATCH - JSON和JSON_ERROR_SYNTAX无效或格式错误 - 语法错误。但“语法错误”是“无效或格式错误的json”,不是吗?

我们也找到了有趣的案例 如果我运行代码

$str = '{"j": 1 ] }';
$a = json_decode($str);

var_dump($a); //NULL
var_dump(json_last_error()); //2
var_dump(json_last_error_msg()); // State mismatch (invalid or malformed JSON)

在PHP 7.0.6中输出

NULL
int(2)
string(42) "State mismatch (invalid or malformed JSON)"

PHP 5.6.28

NULL
int(4)
string(35) "object value separator ',' expected"

PHP 5.6.18

NULL
int(4)
string(35) "object value separator ',' expected"

我在这里运行代码 http://phptester.net/ 在任何情况下输出都是

NULL
int(2)
string(42) "State mismatch (invalid or malformed JSON)"

有谁知道输出是正确的以及为什么?

0 个答案:

没有答案