2013-05-15 92 views
4

我試圖用JSON解碼來獲取一些信息,但它不工作,它只是顯示了當我用var_dump不工作PHP json_decode - 顯示NULL輸出

數據爲空下面是通過JSON格式的數據網址

orderSummary={"orderInfo":[{"itemNumber":"1","quantity":"3","price":"5.99","productName":"Item_B"}]} 

當我簡單地echo未解碼的字符串,我得到以下

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

+0

在你的'php.ini'中禁用'magic_quotes_gpc'。 –

回答

12

首先通過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 
       ) 

     ) 

) 

Demo

備選地

關閉magic_quotes_gpc。考慮到它已被棄用(並在5.4中刪除),這是更好的選項

+0

謝謝,這工作完美。任何想法爲什麼斜槓出現?我之前使用過JSON_decode,但我從來沒有發生過這種情況。 – user2268281

+2

如果您在PHP.ini中啓用了'magic_quotes_gpc',則會在GET/POST數據中的引號之前添加斜槓。您應該關閉此功能,因爲此功能已棄用。 – xbonez