2014-05-08 41 views
0

我發送一個GET請求到服務器使用curl並取回json數據。當我在瀏覽器中打印這些數據時,我可以看到沒有斜槓的正確的json結構(關閉了魔術引號) - 完全沒有問題。

即使我複製粘貼這個json數據從瀏覽器到另一個php文件中的變量,然後嘗試解碼它可以正常工作。數據在該文件中被解碼。

但是,當我嘗試解碼數據時,從cURL請求中獲取數據失敗。所有返回是:數組
cURL調用後json_decode不工作

這裏是我嘗試:

$resp = curl_exec($curl); 
$d=json_decode($resp,true); 

我不知道爲什麼會這樣怪異的行爲? 我已經試過幾乎在這個線程json_decode returns NULL after webservice call

提到的一切,我也已經檢測到使用mb_detect_encoding由捲曲調用返回的字符串的編碼,這是UTF-8

這件事情讓我發瘋了...

更新:好的......看來json_decode已經解碼了數據並返回了$ d變量,但是我無法訪問數組中的元素。我使用print_r來查看數組的結構。這是有點LIK這樣的:

 
Array ( 
    [response] => Array ( 
        [start] => 0 
        [docs] => Array ( 
           [0] => Array ( 
             [id] => S132250037010452 
             [slno] => 452 
            ) 
          ) 
        [numFound] => 1 
       ) 
) 



當我嘗試使用訪問元素ID:

echo $d[response][docs][0][id]; 

我得到一個通知,說明:使用未定義的常量回應 - 假設「迴應'在那一行上。這是什麼意思??

+0

那你對你的設置'curl_setopt'?如果你'var_dump($ resp)'它顯示了什麼? – Javad

+0

確定一些進展.....我能夠看到使用print_r的數組結構,這意味着json被解碼,但仍然無法訪問元素 – Alok

回答

0

您的編輯後,進入這一領域,你需要附上'

echo $d['response']['docs'][0]['id']; // <--- Will return 'S132250037010452' 

之間

如果不附上姓名,PHP會嘗試爲常數使用

+0

仍然是相同的結果。這次錯誤也有報價。使用未定義的常量響應 - 假定'響應' – Alok

+0

不可能得到相同的結果....如果使用'''或'''PHP不嘗試使用常量。我寫了?(或用'「'而不是''') – Sal00m

+0

雙引號終於爲我工作......感謝你讓我的一天.... :) – Alok