JSONArray列出<object> </object>

时间:2014-04-27 01:01:07

标签: java android json

我正在尝试将json字符串/数组解析为对象列表。 jsonString是我尝试在jsonArray中创建的原始字符串,如下所示:

 List<Drink> drinks = new ArrayList<Drink>();
 JSONArray jsonArr = new JSONArray(jsonString); 

字符串是:

 [{"alcohol":"Vodka","date":"2014-04-25T22:04:51","units":3.0},               
{"alcohol":"Beer","date":"2014-04-25T21:44:26","units":3.0}]

我真的不知道如何从这里开始,

任何帮助都会很棒:)

3 个答案:

答案 0 :(得分:1)

您可以遍历JSONArray并添加到您的饮品List,如下所示:

for (int i=0; i<jsonArr.length(); i++) {
    JSONObject jsonDrink = jsonArr.getJSONObject(i);
    String alcohol = jsonDrink.getString("alcohol");
    String date = jsonDrink.getString("date");
    double units = jsonDrink.getDouble("units");
    Drink drink = new Drink();
    // initialize drink object values here or in constructor (don't know what this class has)
    drinks.add(drink);
}

答案 1 :(得分:1)

遍历JSONArray,检索每个JSONObject并从对象的属性中调用相应的Drink构造函数:

List<Drink> drinks = new ArrayList<Drink>();
JSONArray jsonArr = new JSONArray(jsonString);
int len = jsonArr.length();
for (int i = 0; i < len; ++i) {
    JSONObject obj = jsonArr.getJSONObject(i);
    String alcohol = obj.getString("alcohol");
    String date = obj.getString("date");
    double units = obj.getDouble("units");
    Drink drink = new Drink(alcohol, date, units);
    drinks.add(drink);
}

当然,在构建Drink对象之前,您可能需要解析日期或进行其他数据转换。

答案 2 :(得分:0)

JSONArray 有 toList() 方法。见 https://stleary.github.io/JSON-java/org/json/JSONArray.html#toList-- (我假设你使用 JSONArray 形式 org.json) 你的代码应该是这样的

import org.json.JSONArray;
List<Drink> drinks = new JSONArray(jsonString).toList();