Web 服务调用后的 JSON 解码问题
在这种有关 JSON 解析的情况下,OP 遇到一个特殊问题,即 json_decode 在调用后莫名其妙地返回 NULL调用网络服务。 Web 服务传输看似遵循正确语法的 JSON 数据:
{"action":"set","user":"123123123123","status":"OK"}
但是,在尝试使用 json_decode($foo, true) 在 PHP 应用程序中解码此 JSON 负载时,它令人困惑地返回 NULL。
潜在的解决方案
为了解决这个令人困惑的问题, OP 忽略了一个潜在的关键因素:PHP 魔术引号。如果在服务器上启用魔术引号,则可能会通过转义潜在危险字符来对传入数据造成严重破坏。在这种情况下,Web 服务似乎正在传输未转义的 JSON,从而导致与魔术引号发生冲突。
要避免此问题,请通过将以下行添加到 PHP 脚本的开头来禁用魔术引号:
if (get_magic_quotes_gpc()) { $param = stripslashes($_POST['param']); } else { $param = $_POST['param']; } $param = json_decode($param, true);
这可确保从 Web 服务接收的 JSON 数据不受魔术引号的影响,从而解决解码问题。
以上是为什么 json_decode 在 Web 服务调用后返回 NULL?的详细内容。更多信息请关注PHP中文网其他相关文章!