【发布时间】:2014-07-15 12:13:56
【问题描述】:
我需要获取 JSON 请求并将其设置在下面的设计中。
Groupname1
Staff1
Staff2
Groupname2
Staff3
这是我的 json 响应:
{"Response": [{"complete_count":"11","assigned_count":15,"checked_count":"2","staff_firstname":"krish","staff_emp_code":"mmch23 y","staff_id":"29","group_name":"Technical- 1ty"},{"complete_count":"0","assigned_count":3,"checked_count":"0","staff_firstname":"Ravi","staff_emp_code":"MMCH050","staff_id":"38","group_name":"Technical- 1ty"},{"complete_count":"3","assigned_count":4,"checked_count":"0","staff_firstname":"mercy","staff_emp_code":"mmcho56","staff_id":"78","group_name":"Technical- 1ty"},{"complete_count":"0","assigned_count":1,"checked_count":"0","staff_firstname":"Sam ji","staff_emp_code":"Et","staff_id":"71","group_name":"test group"}],"success":1}
这是我的代码:
class My_WIReports extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(DIALOG_LOADING);
}
protected String doInBackground(String... args) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
json = jParser.makeHttpRequest(url_weekly_list_individual, "POST", params);
Log.d("My Weekly Individual Reports: ", json.toString());
try {
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
JSONObject jsonObj = new JSONObject(json.toString());
groups = jsonObj.getJSONArray(TAG_STAFFS);
for (int i = 0; i < groups.length(); i++) {
JSONObject c = groups.getJSONObject(i);
String groupname = c.getString(TAG_GROUPNAME);
String Staff_Complete_count = c.getString(TAG_STAFF_COMPC);
String Assig_Count = c.getString(TAG_STAFF_ASSC);
String Staff_F_name = c.getString(TAG_STAFF_NAME);
String Staff_Emp_code = c.getString(TAG_STAFF_EMPC);
String Staff_id = c.getString(TAG_STAFF_ID);
String track_no = String.valueOf(i + 1);
map = new HashMap<String, String>();
map.put(TAG_GROUPNAME, groupname);
map.put(TAG_STAFF_COMPC, Staff_Complete_count);
map.put(TAG_STAFF_ASSC, Assig_Count);
map.put(TAG_STAFF_NAME, Staff_F_name);
map.put(TAG_STAFF_EMPC, Staff_Emp_code);
map.put(TAG_STAFF_ID, Staff_id);
map.put(TAG_STAFF_NO, track_no);
groupList.add(map);
}
} else {
groupList.clear();
}
} catch (JSONException e) {
e.printStackTrace();
}
return json.toString();
}
得到如下结果:
Technical- 1ty -(group_name - 1)
krish -(staff_firstname - 1)
Technical- 1ty -(group_name - 1)
Ravi -(staff_firstname - 2)
Technical- 1ty -(group_name - 1)
Mercy -(staff_firstname - 3)
test group -(group_name - 2)
sam Ji - (staff_firstname -1)
但我需要得到如下结果:
Technical- 1ty -(group_name - 1)
krish -(staff_firstname - 1)
Ravi -(staff_firstname - 2)
Mercy -(staff_firstname - 3)
test group -(group_name -2)
sam Ji -(staff_firstname - 1)
请给我一个解决方案?
如何删除重复的 group_name 值?
【问题讨论】:
-
从错误中可以看出您正在尝试将 Json 对象转换为 Json 数组,将其更改为 json 对象
-
是 TAG_GROUP_NAME=="groupname" 吗?
-
请告诉我们这些常量代表什么
-
@Kartik_Koro 是的,完全是 TAG_GROUP_NAME=="groupname" 。在这里我需要获取上述值并在 android 客户端设置值。在上面的代码中也没有执行这一行:System. out.println("groups"+" "+" "+groups);它会捕获循环。请检查代码并为此提供解决方案?
-
你的 json 中的 groupname 字段对应于 JSONObject 而不是 JSONArray。这将给出您遇到的错误。但是,我认为您在多个地方都犯了这个错误,如果您告诉每个最终常量代表什么字段,我可以尝试为您提供完整的解决方案。