我正在使用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
。但是,我仍然找不到错误。
非常感谢您的帮助。
答案 0 :(得分:3)
在你的“不工作”示例中,深埋在JSON中的一个键是:
"city":"Rezé",
这包含非ASCII字符é
。有可能JSON作为非UTF8编码(可能是ISO8859-1)提交,这使得json_decode()
barf。