2015-05-10 119 views
0

我想下面的JSON文件的“速度”对象中访问值的货币(如英镑)之一:问题解析JSON用PHP(卷曲)

JSON文件:

{ 
"success":true, 
"timestamp":1430594775, 
    "rates":{ 
    "AUD":1.273862, 
    "CAD":1.215036, 
    "CHF":0.932539, 
    "CNY":6.186694, 
    "EUR":0.893003, 
    "GBP":0.66046, 
    "HKD":7.751997, 
    "JPY":120.1098, 
    "SGD":1.329717 
    } 
} 

这是我的方法:

PHP(卷曲):

$url = ... 

// initialize CURL: 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

// get the (still encoded) JSON data: 
$json = curl_exec($ch); 
curl_close($ch); 

// store decoded JSON Response in array 
$exchangeRates = (array) json_decode($json); 

// access parsed json 
echo $exchangeRates['rates']['GBP']; 

,但没有奏效。

现在,当我尝试访问JSON文件的“时间戳”值是这样的:

echo $exchangeRates['timestamp']; 

它工作正常。

任何想法?

+0

认沽'var_export($ JSON);'这是什么节目? – splash58

+0

它打印整个阵列 – Frank

+1

你试过在json_decode前删除(array)并在第二个参数中添加true? – KoKo

回答

2

尝试在json_decode前移除(阵列)和第二个参数相加真正

1

这是解决方案。

$exchangeRates = (array) json_decode($json,TRUE); 

https://ideone.com/LFbvUF

什么所有你需要做的就是用json_decode函数的第二个参数。

这是完整的代码片段。

<?php 
$json='{ 
"success":true, 
"timestamp":1430594775, 
"rates":{ 
"AUD":1.273862, 
"CAD":1.215036, 
"CHF":0.932539, 
"CNY":6.186694, 
"EUR":0.893003, 
"GBP":0.66046, 
"HKD":7.751997, 
"JPY":120.1098, 
"SGD":1.329717 
} 
}'; 
$exchangeRates = (array) json_decode($json,TRUE); 
echo $exchangeRates["rates"]["GBP"]; 
?>