2015-05-10 118 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"]; 
?>