2

我的脚本测试了一个数组元素是否包含 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,但没有运气。

知道为什么会这样吗?

4

2 回答 2

2

它是有效的 JSON。

你可能想检查你是否真的得到了一个对象:

$s = '70115';

if (is_object(json_decode($s))){  
    echo 'this is json';
} else {
    echo 'this is not json';
}
于 2013-07-13T13:45:49.607 回答
0

实际上,JSON 文本被定义为序列化对象或数组

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

  JSON-text = object / array

但是,json_decode它也会解码任何其他有效的 JSON 值

于 2013-07-13T14:04:19.273 回答