如何在Android上按标签名称的升序和降序对JSONArray进行排序。
在我的应用程序中,我有一个类似于以下内容的JSON,需要根据用户选项显示数据(按user_id标记按升序或降序排序)。我已将JSON解析如下:
JSONObject mObject = new JSONObject(JSONResponse); String commentsVal = mObject.getString("message"); String resultVal = mObject.getString("result"); JSONArray resultArray = new JSONArray(resultVal); int resultSize = resultArray.length(); for (int i = 0; i < resultArray.length(); i++) { JSONObject resultObj = resultArray.getJSONObject(i); resultObj.getString("comment_id"); ..... } ..............
这是我的JSON响应:
{ "success": 1, "message": "some message", "result": [ { "comment_id": "43906", "comp_id": "116725", "user_id": "48322", "agree": "0", ..... "replies": [....] }, { "comment_id": "43905", "comp_id": "116725", "user_id": "48248", "agree": "0", ....... "replies": [...] } ] }
解析时,我需要按“ user_id”标签名称排序的“结果” JSON数组,如何在Android中做到这一点?
public static JSONArray sortJsonArray(JSONArray array) { List<JSONObject> jsons = new ArrayList<JSONObject>(); for (int i = 0; i < array.length(); i++) { jsons.add(array.getJSONObject(i)); } Collections.sort(jsons, new Comparator<JSONObject>() { @Override public int compare(JSONObject lhs, JSONObject rhs) { String lid = lhs.getString("comment_id"); String rid = rhs.getString("comment_id"); // Here you could parse string id to integer and then compare. return lid.compareTo(rid); } }); return new JSONArray(jsons); }
这段代码可以返回排序后的JSONArray,但是我仍然建议您将JSONObject解析为自己的数据bean,然后对它们进行排序。