java - 如何在android中对JSONArray进行排序

标签 java android json

如何在 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,然后对其进行排序。

关于java - 如何在android中对JSONArray进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17697568/

相关文章:

json - 如何使用 shell jq 动态解析 JSON 对象

java - PlayFramework - 如何上传文件/图像

java - ActiveMq:超过允许的最大客户端连接数

android - 在 Android Wear 上设置背景

javascript - jQuery getJSON 打印名称为字符串的数组

java - Android JSON 对象返回 null

java - JFrame getHeight() 和 getWidth() 返回 0

java - 用于地理编码的 Mapbox API 在运行多个记录时导致内存不足异常

Android Studio 无法识别 Espresso 导入

Android Studio 3.2 金丝雀版本不呈现导航标签