iPad端ISH应用中PHP的json_decode解析JSON失效求助
解决ISH环境中json_decode无法解析JSON的问题
以下是针对你遇到的问题的排查和解决步骤:
获取json_decode的具体错误信息
在调用json_decode后添加代码输出错误原因,这是定位问题的关键:$jsonPHP = file_get_contents('/var/www/localhost/htdocs/xxx/xxx/datos.json'); $jsondec = json_decode($jsonPHP); // 输出错误信息 var_dump(json_last_error_msg());常见错误如
Syntax error(JSON语法错误)、Malformed UTF-8 characters(UTF-8编码异常)等,能直接指明问题所在。处理UTF-8 BOM头问题
若错误提示编码异常,大概率是JSON文件带有UTF-8 BOM头(Windows编辑器保存时易产生)。PC端Linux可能自动忽略,但ISH的PHP环境对BOM敏感。可以在读文件后去除BOM:$jsonPHP = file_get_contents('/var/www/localhost/htdocs/xxx/xxx/datos.json'); // 移除UTF-8 BOM头 $jsonPHP = ltrim($jsonPHP, "\xEF\xBB\xBF"); $jsondec = json_decode($jsonPHP);验证JSON格式合法性
把echo输出的JSON内容复制到JSON校验工具中验证,或在ISH终端使用jsonlint命令检查文件:# 先安装jsonlint(若未安装) apk add jsonlint # 校验JSON文件 jsonlint /var/www/localhost/htdocs/xxx/xxx/datos.json若检测到语法错误,直接修正JSON文件即可。
确认PHP JSON扩展是否启用
创建一个info.php文件,内容如下:<?php phpinfo(); ?>访问该文件后搜索
json模块,若未启用,通过ISH的包管理器安装JSON扩展:apk add php-json
内容的提问来源于stack exchange,提问作者Andres Comeron
相关产品推荐
相关产品推荐

