PHP读取外部文件JSON对象解码失败问题求助
问题根源:JSON格式本身不符合规范
你遇到的解码失败问题,和文件类型、编码处理都没关系,核心原因是你的main.config文件里的JSON内容存在语法错误!
错误点分析
JSON里的数组必须用**方括号[]**包裹,而你写的tags字段用了表示对象的大括号{},而且对象要求是键:值对的结构,你这里只有值没有键,完全不符合JSON的语法规则:
错误的tags部分:
"tags":{"php","js","html"}
正确的数组写法:"tags":["php","js","html"]
修正后的完整JSON内容
把main.config的内容改成下面这样,就能正常解码了:
{"name":"wtf","image":"main.PNG","desc":"This is about this that and that.","tags":["php","js","html"]}
调试小技巧
以后遇到JSON解码失败的情况,可以用PHP的json_last_error_msg()函数查看具体错误,帮你快速定位问题:
// 简化读取文件的代码,file_get_contents比循环读取更简洁 $string = file_get_contents("main.config"); $data = json_decode($string, true); if ($data === null) { echo "解码错误:" . json_last_error_msg(); }
比如你原来的错误内容,运行后会输出类似Syntax error的提示,直接指向tags字段的语法问题。
内容的提问来源于stack exchange,提问作者user8517929
相关产品推荐
相关产品推荐

