2017-03-08 124 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']