2017-03-08 23 views
0

PHPを使用してWebサイトから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

可能な重複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が配列であることです(そのデータは角括弧で囲まれているため)。この例では、配列には1つの要素、[0]しかないため、icaoにアクセスするには、以下に示すように参照する必要があります。

私の推測では、次の行が正しく動作しなかったことである:JSONに基づいて

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

あなたが記載されているあなたがdataicaoメンバーを検索したい場合は、この行は次のようにする必要があります。

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

正常な応答をテストする場合、次の参照は'success'を返す必要があります。

$json['status'] 
[私はPHPでJSONからデータを抽出する方法は?](の
関連する問題