2017-03-08 122 views
0

我使用PHP從網站獲取JSON響應,然後使用json_decode處理響應。這是我的PHP代碼:使用PHP從JSON數據獲取值

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,"https://api.checkwx.com/taf/LLBG/?format=json"); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$vars); //Post Fields 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

    $headers = [ 
     'X-API-Key: 555555555' 
    ]; 

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

    $response = curl_exec($ch); 
    curl_close ($ch); 
    $json=json_decode($response,true); 
    $fulltaf = $json['status']['success']['data']['icao']; 

這是行不通的。

這是JSON數據返回給被json_decode進行處理:

{ 
    "status": "success", 
    "data": [ 
     { 
      "icao": "KPIE", 
      "observed": "07-03-2017 @ 14:20Z", 
      "raw_text": "KPIE 071353Z 13017G23KT 10SM CLR 21\/13 A3031 RMK AO2 SLP262 T02060128", 
      "wind_degrees": 130, 
     } 
    ] 
} 
+0

的[我如何從JSON中提取數據與PHP?(可能的複製http://stackoverflow.com/questions/29308898/how-do-i-extract-data-from-json-with- PHP) –

回答

0

不指定什麼沒有奏效?

第一個問題是您的JSON有語法錯誤。我嘗試使用http://jsonlint.com驗證您的JSON,並在wind_degrees的130之後標記了額外的逗號。檢查實際響應是否沒有逗號。 JSON不會用額外的逗號正確解析。

接下來的問題是data是一個數組(因爲它的數據被括在括號中)。在這個例子中,數組只有一個元素[0],因此要訪問icao,您需要引用它,如下所示。

我的猜測是,下面的行沒有正常工作:

$fulltaf = $json['status']['success']['data']['icao']; 

根據您列出的JSON,此行應該是下面的,如果你想要檢索的dataicao成員。

$fulltaf = $json['data'][0]['icao']; 

如果您想測試成功的響應,則以下參考應返回'success'

$json['status']