使用PHP从JSON数据中获取值

时间:2017-03-08 16:22:31

标签: php json

我使用PHP从网站获取JSON响应,然后使用public static noOrderList<Integer> noOrderList() { return makeListInNoOrder(new Integer[]{ 8, 6, 7, 5, 3, 0, 9, 9, 0, 3, 5, 7, 6, 8}); 处理响应。这是我的PHP代码:

expected:<... 3, 0, 9, 9, 0, 3[]> but was: <... 3, 0, 9, 9, 0, 3[, ]>

这不起作用。

这是json_decode返回的 $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

1 个答案:

答案 0 :(得分:0)

你没有说明什么没有用?

第一个问题是您的JSON有语法错误。我尝试使用http://jsonlint.com验证您的JSON,并在130之后为wind_degrees标记了一个额外的逗号。检查实际响应是否没有该逗号。 JSON不会使用额外的逗号进行正确解析。

下一个问题是data是一个数组(因为它的数据括在括号中)。在此示例中,数组只有一个元素[0],因此要访问icao,您需要引用它,如下所示。

我的猜测是以下行没有正常工作:

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

根据您列出的JSON,如果您想要检索icao的{​​{1}}成员,则此行应如下所示。

data

如果您想测试成功的响应,以下引用应返回 $fulltaf = $json['data'][0]['icao'];

'success'