PHP从JSON获取聊天信息无输出问题求助
解决PHP从JSON字符串获取数据的问题
嘿,我来帮你搞定这个问题!你的代码里有两个核心问题导致无法获取聊天信息,咱们逐个拆解:
问题1:JSON字符串包含HTML实体,无法被正确解析
你传入json_decode的字符串里用的是"(HTML实体的双引号),但JSON要求必须是原生的双引号"。这种情况下json_decode会解析失败,返回null,自然没有任何输出。
解决办法:用htmlspecialchars_decode()把HTML实体转换成原生字符。
问题2:混淆了关联数组和对象的访问方式
你给json_decode传了第二个参数true,这会让它返回关联数组,但你后续用了对象的访问语法->chat,这在数组里是行不通的。
如果你想继续用关联数组,就用['chat']这种数组键名的方式访问;如果想用对象,就把第二个参数去掉(默认是false,返回对象)。
修正后的代码示例(两种方式任选)
方式1:使用关联数组
// 先转换HTML实体 $rawJson = htmlspecialchars_decode('[{"chat":{"username":"RobloxProtectorKing","message":":slender me","time":"2018-03-20 01:56:12"}}]'); // 解码为关联数组 $jsondecoded = json_decode($rawJson, true); // 访问聊天信息 echo $jsondecoded[0]['chat']['message']; // 输出: :slender me // 如果要输出整个chat对象,可以用print_r print_r($jsondecoded[0]['chat']);
方式2:使用对象访问
$rawJson = htmlspecialchars_decode('[{"chat":{"username":"RobloxProtectorKing","message":":slender me","time":"2018-03-20 01:56:12"}}]'); // 解码为对象(第二个参数省略或设为false) $jsondecoded = json_decode($rawJson); // 用对象语法访问 echo $jsondecoded[0]->chat->message; // 输出: :slender me
小技巧:排查JSON解析错误
以后遇到json_decode没结果的情况,可以用json_last_error_msg()查看具体错误,比如你原来的代码运行这个会返回Syntax error,就能快速定位到JSON格式问题。
内容的提问来源于stack exchange,提问作者Logic Tarplus
相关产品推荐
相关产品推荐

