一次解析JSON对象一个项目

时间:2013-03-21 00:27:54

标签: java android

我第一次玩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”)等等,但我不希望它像这样硬编码。我想单独解析每个货币项,然后将其放在微调器中。抓住下一个货币,将它放在微调器中,依此类推。任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分: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);
    }
}