Json_decode错误地认为数字串是json

时间:2013-07-13 13:39:54

标签: php json

我的脚本测试以查看数组元素是否包含json。一切顺利,直到我到达包含由数字组成的字符串(邮政编码)的数组元素。这就是:

$s = '70115';
if (json_decode($s)){  
    echo 'this is json';
} else {
    echo 'this is not json';
}
//result: 'this is json'   
//expected result: 'this is not json'

我尝试将$ s显式地转换为字符串并将其编码为UTF8,但没有运气。

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

它是有效的JSON。

您可能想要检查您是否确实有一个对象:

$s = '70115';

if (is_object(json_decode($s))){  
    echo 'this is json';
} else {
    echo 'this is not json';
}

答案 1 :(得分:0)

实际上,JSON text is defined to be either a serialized object or array

  

JSON文本是序列化对象或数组。

  JSON-text = object / array

但是,json_decode也会解码任何其他valid JSON value