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",
...
}

我想一次读取该对象一种货币,以便可以使用它来填充微调器。类似于以下内容:

/*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);
...

我知道如何通过单独调用每个项目来做到这一点,例如rates = json.getString("AED") 等等,但我不希望它像那样硬编码。我想单独解析每个货币项目,然后将其放在微调器中。抓住下一个货币,将其放入微调器中,依此类推。任何帮助是极大的赞赏。

4

1 回答 1

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);
    }
}
于 2013-03-21T01:01:42.623 回答