繁体   English   中英

解析JSON Android ArrayList

[英]Parsing JSON Android ArrayList

如果我的问题的标题有点误导,我深表歉意。

我创建了一个POJO来保存有关用户的胆固醇信息(HDL,LDL,甘油三酸酯,单位等)。 现在,我想使用JSONObject创建一个ArrayList,以便生成一些数据点。

我的JSONObject包含以下内容:

{
"cholesterol": [
    {
        "date": "2014-01-01",
        "hdl": "56464.0",
        "ldl": "46494.0",
        "triGlycaride": "0.0",
        "uid": "email@email.com",
        "unit": "mg"
    },
    {
        "date": "2014-01-01",
        "hdl": "5.0",
        "ldl": "5.0",
        "triGlycaride": "0.0",
        "uid": "email@email.com",
        "unit": "mg"
    },
    {
        "date": "2014-01-01",
        "hdl": "6.0",
        "ldl": "6.0",
        "triGlycaride": "0.0",
        "uid": "email@email.com",
        "unit": "mg"
    }
]
}

我的问题是,如何遍历此JSON对象? 我想为每个对象使用一个,并创建一个新对象,以在每次迭代中添加到ArrayList中。 注意 :我以前从未使用过JSONObject,因此对它的用法不太熟悉。

编辑:谢谢大家,这正是我想要的。 我需要更加熟悉JSON操作。 我也将研究GSON!

您已经创建POJO时,按照Eric的建议使用GSON

Gson gson = new Gson();
Type type = new TypeToken<List<POJO>>() {}.getType();
List<POJO> mList = gson.fromJson(your_json_string_here, type);

是时候学习一些JSON操作了:

JSONArray array = yourJsonObject.optJSONArray("cholesterol");
if (array != null) {
    for (int i=0; i< array.length; i++) {
        JSONObject object = array.optJSONObject(i);
        if (object != null) {
            // this is where you manipulate all the date, hdl, ldl...etc
        }
    }
}

您还应该在访问json之前检查是否为null

如果我对您的理解正确,那么是否要创建POJO的ArrayList? 我假设您在POJO类中有getter和setter。 像这样在顶部附近的某个地方初始化一个ArrayList

private ArrayList<CholesterolInformation> mCholesterol;

现在,像这样通过json解析

JSONobject data = new JSONObject(jsonStringData);
JSONArray cholesterol = data.getJSONArray("cholesterol");
for(int i = 0; i < cholesterol.length; i++)
{
    JSONObject object = cholesterol.getJSONObject(i);
    // Create a new object of your POJO class
    CholesterolInformation ci = new CholesterolInformation();
    // Get value from JSON
    String date = object.getString("date");
    // Set value to your object using your setter method
    ci.setDate(date);
    String hdl = object.getString("hdl");
    ci.setHdl(hdl);
    .....
    .....
    // Finally, add the object to your arraylist
    mCholesterol.add(ci);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM