我从python接收到一个json数组,作为PHP中curl_exec的返回(第一个json PHP-> python,它返回另一个json),并且由于语法错误而解码失败。收到的json是有效的,但是以某种方式,如果我将此json转换为字符串并将其打印,则会得到一个包含29个字符的字符串,但是如果我打印strlen((string)$ my_json),它将显示50。
这是代码:
$results = curl_exec($ch); curl_close($ch); var_dump(json_decode($results));
然后返回NULL。如果我执行以下操作
echo (string)$results;
它打印[[11,“ stuffstuf”,“ stuffs”]](29个字符),它是有效的json。但是如果我这样做
echo strlen((string)$results);
它打印50。
所以,我不知道发生了什么。任何想法将不胜感激=)
可能是您周围有一些html标记,在执行简单的echo时看不到?
尝试:echo htmlentities((string)$results);查看更多信息,或检查页面的html源。
echo htmlentities((string)$results);
如果json_decode()失败,则表示该字符串不是标准的JSON。
json_decode()
您还可以使用json_last_error_msg()找出为什么它返回NULL的原因。如果json_decode中有任何错误,则将返回错误消息。