下面是我的代码,如果我获取“id”,它会解析JSON。如果我不给id,那么JSON数组将不会显示。如何在没有id的情况下显示JSON?
如果我没有在JSON文件中给出id,那么如何在没有“id”的情况下解析JSONArray,那么数组将不会显示有必要在JSON文件中给出“id”???
这个json数组没有显示
{
"status": 1,
"data": [
{
"title": "Elementary"
},
{
"title": "Middle"
},
{
"title": "High"
},
{
"title": "Atypical"
}
]
}
这个json数组将显示
{
"status": 1,
"data": [
{
"id": "1",
"title": "Elementary"
},
{
"id": "2",
"title": "Middle"
},
{
"id": "3",
"title": "High"
},
{
"id": "4",
"title": "Atypical"
}
]
}
代码:
JSONObject json2 = new JSONObject(str);
status = json2.getString("status");
if (status.equals("1")) {
JSONArray school = json2.getJSONArray("data");
for (int i = 0; i < school.length(); i++) {
JSONObject object = school.getJSONObject(i);
// Category_ID.add(Long.parseLong(object.getString("id")));
Category_name.add(object.getString("title"));
}
答案 0 :(得分:0)
您正在此处访问id属性:
Category_ID.add(Long.parseLong(object.getString("id")));
如果不存在,则会抛出异常。
答案 1 :(得分:0)
我想你希望你的代码适用于两个JSON样本。
您可以检查“id”是否存在,然后进行相应的解析。
您可以使用以下代码执行此检查。
String id = object.optString("id");
//JSONObject.optString("id") will return id's value if it exists or else will return empty string.
if(!"".equals(id)){
Category_ID.add(Long.parseLong(id));
//this code will run only when your JSON contains id
}
else
{
//this code will run when your JSON doesn't have id field.
Category_ID.add();
}
答案 2 :(得分:0)
解析你的json时尝试使用此代码:
if(object.has("id"))
{
Category_ID.add(Long.parseLong(object.getString("id")));
}
else
{
// add default id
}
希望这对你有用。