首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在安卓系统中对JSONArray进行排序

如何在安卓系统中对JSONArray进行排序
EN

Stack Overflow用户
提问于 2013-07-17 18:39:35
回答 3查看 11.5K关注 0票数 1

如何在android上使用升序和降序对JSONArray进行排序。

在我的应用程序中,我有一个如下所示的JSON,需要根据用户选项显示数据(按user_id标签升序或降序排序)。我已经按如下方式解析了JSON:

代码语言:javascript
运行
复制
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响应:

代码语言:javascript
运行
复制
{
"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": [...]
    }
]

}

我需要“结果”JSON数组在解析时按"user_id“标签名称排序,在Android中怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-17 19:10:32

代码语言:javascript
运行
复制
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,然后对它们进行排序。

票数 15
EN

Stack Overflow用户

发布于 2013-07-17 18:44:39

在我看来,最简单的方法不是像您建议的那样“对JSON数组进行排序”,而是将整个内容解析成包含如下信息的数据结构:

代码语言:javascript
运行
复制
class Results {
     String user_id;
     Strung comment_id;
}

将其另存为ArrayList或插入收藏夹列表结构。

解析完整个JSON Array之后,就可以使用Collections.sort根据user_id字段对ArrayList进行排序,给出它们的顺序

票数 1
EN

Stack Overflow用户

发布于 2013-07-17 19:08:12

下面的代码可能对你有用。

代码语言:javascript
运行
复制
ArrayList<ResultBean> user_array;
Collections.sort(user_array, new Comparator<ResultBean>() {
    @Override
    public int compare(ResultBean data1, ResultBean data2) {
        if (data1.getUserId() >= data2.getUserId()) {
            return -1;
        } else {
            return 1;
        }
    }
});

您的ResultBean将如下所示。

代码语言:javascript
运行
复制
public class ResultBean {
    //other methods and declarations...
    public int getUserId() {
        return userId;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17697568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档