一尘不染

json_decode PHP问题

json

我从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。

所以,我不知道发生了什么。任何想法将不胜感激=)


阅读 211

收藏
2020-07-27

共1个答案

一尘不染

可能是您周围有一些html标记,在执行简单的echo时看不到?

尝试:echo htmlentities((string)$results);查看更多信息,或检查页面的html源。

如果json_decode()失败,则表示该字符串不是标准的JSON。

您还可以使用json_last_error_msg()找出为什么它返回NULL的原因。如果json_decode中有任何错误,则将返回错误消息。

2020-07-27