2013-03-21 36 views
0

我正在玩android遊戲開發的第一次。我正在嘗試製作一個簡單的貨幣轉換程序。我正在處理的特定部分是使用所有可用貨幣填充微調框,而無需手動將其全部編碼。我有一個json文件,如下所示:
{
"AED": "United Arab Emirates Dirham",
"AFN": "Afghan Afghani",
"ALL": "Albanian Lek",
"AMD": "Armenian Dram",
"ANG": "Netherlands Antillean Guilder",
"AOA": "Angolan Kwanza",
"ARS": "Argentine Peso",
"AUD": "Australian Dollar",
"AWG": "Aruban Florin",
...
}
解析JSON對象一次一個項目

我想一次讀取一個貨幣的對象,所以我可以用它來填充微調器。

/*PSEUDOCODE*/ 
spinner = (Spinner) findViewById(R.id.currencyTo); 
List<String> list = new ArrayList<String>(); 
JSONParser jParser = new JSONParser(); 
JSONObject json = jParser.getJSONFromUrl(url); 
while (rates != null) { 
rates = json.getString(first item in json); 
list.add(rates); 
... 

我知道如何單獨調用每一個項目去做,比如費率= json.getString(「AED」)等等,但我不希望它這麼硬編碼:沿東西線像那樣。我想分別解析每個貨幣項目,然後將其放置在微調器中。抓住下一個貨幣,將它放在微調器中,等等。任何幫助是極大的讚賞。

+0

http://stackoverflow.com/questions/9151619/java-iterate-over-jsonobject – gpasci 2013-03-21 00:31:19

+0

另外http://stackoverflow.com/a/4407731/321697 – kcoppock 2013-03-21 00:35:40

+0

我想有增量JSON解析器,但一次解析JSON幾乎總是更好。特別是你有一個問題,「對象」(字典/地圖)條目不能保證以任何特定的順序,所以幾乎每個訪問都必須從頭開始掃描JSON。 – 2013-03-21 00:44:30

回答

0

是的,你可以遍歷所有的JSON元素。

試試這個:

final JSONParser jParser = new JSONParser(); 
final JSONObject jObject = jParser.getJSONFromUrl(url); 
Iterator<?> keys = jObject.keys(); 

while(keys.hasNext()){ 
    final String key = (String)keys.next(); 
    final Object obj = jObject.get(key); 
    if(obj instanceof JSONObject){ 
     final String rate = jObject.getString(key); 
     System.out.println(key + " => " + rate); 
     list.add(rate); 
    } 
} 
+0

不要忘記接受(檢查)正確的答案。 – 2013-03-23 23:50:21