PHP json_decode无法工作 - 显示NULL输出

4
我尝试使用JSON解码来获取一些信息,但是它没有起作用,当我使用var_dump时,它只显示数据为空。
以下是通过URL传递的JSON格式化数据。
orderSummary={"orderInfo":[{"itemNumber":"1","quantity":"3","price":"5.99","productName":"Item_B"}]}

当我简单地输出未解码的字符串时,我得到以下结果。
echo $_GET['orderSummary'];
//displays the following
{\"orderInfo\":[{\"itemNumber\":\"1\",\"quantity\":\"3\",\"price\":\"5.99\",\"productName\":\"Item_B\"}]}

然而,当我尝试对其进行解码时,结果为空。
$order = $_GET['orderSummary'];
$data = json_decode($order,true);
echo "<PRE>";
var_dump($data); die();
//displays the following
<PRE>NULL

它的格式不正确吗?


1
你难道没有看到那些反斜杠吗?你不觉得很困惑吗,你传递的数据没有使用反引号,但是它们却出现了?你认为在添加一些随机字符(在这种情况下是反引号)后,JSON仍然有效吗? - zerkms
在您的 php.ini 文件中禁用 magic_quotes_gpc - Ja͢ck
1个回答

14

首先通过 stripslashes() 处理输入字符串。

$input = '{\"orderInfo\":[{\"itemNumber\":\"1\",\"quantity\":\"3\",\"price\":\"5.99\",\"productName\":\"Item_B\"}]}';

print_r(json_decode(stripslashes($input)));

输出

stdClass Object
(
    [orderInfo] => Array
        (
            [0] => stdClass Object
                (
                    [itemNumber] => 1
                    [quantity] => 3
                    [price] => 5.99
                    [productName] => Item_B
                )

        )

)

示例

或者

关闭magic_quotes_gpc。考虑到它已被弃用(并在5.4中被移除),这是更好的选择


1
谢谢,这个完美地解决了问题。不知道为什么会出现这些斜杠?我之前使用过JSON_decode,但从未遇到过这种情况。 - user2268281
2
如果在PHP.ini中开启了magic_quotes_gpc,则在GET/POST数据中的引号前会添加反斜杠。您应该关闭此功能,因为它已被弃用。 - Ayush

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接