json_decode行为不可预测

时间:2013-06-26 01:48:09

标签: php parsing utf-8 json

我正在使用php构建一个公共API,并且json_decode()存在一个非常奇怪的问题。我带来了一大串JSON,我正在动态形成这个JSON,并且在这个过程中遇到了很多麻烦。我试图像这样加载JSON对象:

$all_related_users_obj = json_decode($this->get_related_users_raw_JSON($user_id));
if(is_object($all_related_users_obj)) echo $all_related_users_obj->tags[0]->first_name;
else echo "NOT AN OBJECT";

我发现这适用于我通过它的$user_id个整数的大约一半而不是其他整数。通常情况下,我会认为我的JSON只是格式错误,但根据JSONlint,我的所有JSON都已正确形成。

created a gist的JSON文件示例正确加载到$all_related_users_obj而另一个不加载。{/ p>

使用json_last_error()函数,我收到JSON_ERROR_UTF8,表明JSON包含Malformed UTF-8 characters, possibly incorrectly encoded。但是,我仍然找不到错误。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

在你的“不工作”示例中,深埋在JSON中的一个键是:

"city":"Rezé",

这包含非ASCII字符é。有可能JSON作为非UTF8编码(可能是ISO8859-1)提交,这使得json_decode() barf。