正在解析 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 Object?我想为每个人使用一个,并创建一个新的 object 以在每次迭代中添加到 ArrayList 中......你有什么意见或建议吗?
注意:JSONObject我没有用过,所以不太熟悉它的用法。
编辑: 谢谢大家,这正是我要找的。我需要更熟悉 JSON 操作。我也会研究 GSON!
是时候学习一些 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 class 中有 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);
}
按照 Eric 的建议使用 GSON,因为您已经创建了 POJO。
Gson gson = new Gson();
Type type = new TypeToken<List<POJO>>() {}.getType();
List<POJO> mList = gson.fromJson(your_json_string_here, type);
如果我的问题标题有点误导,我深表歉意。
我创建了一个 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 Object?我想为每个人使用一个,并创建一个新的 object 以在每次迭代中添加到 ArrayList 中......你有什么意见或建议吗? 注意:JSONObject我没有用过,所以不太熟悉它的用法。
编辑: 谢谢大家,这正是我要找的。我需要更熟悉 JSON 操作。我也会研究 GSON!
是时候学习一些 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 class 中有 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);
}
按照 Eric 的建议使用 GSON,因为您已经创建了 POJO。
Gson gson = new Gson();
Type type = new TypeToken<List<POJO>>() {}.getType();
List<POJO> mList = gson.fromJson(your_json_string_here, type);