如何在Android的排序JSONArray [英] How to sort JSONArray in android

查看:168
本文介绍了如何在Android的排序JSONArray的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何用升序和Android上降其标签名称进行排序JSONArray。

在我的应用我有类似下面的JSON和需要显示的数据根据​​用户的选择(通过user_ID的标签升序排序或降序)。我已解析的JSON如下:

 的JSONObject mObject =新的JSONObject(JSONResponse);
字符串commentsVal = mObject.getString(信息);
字符串resultVal = mObject.getString(结果);
JSONArray resultArray =新JSONArray(resultVal);
INT resultSize = resultArray.length();
的for(int i = 0; I< resultArray.length();我++){
    JSONObject的resultObj = resultArray.getJSONObject(I)
    resultObj.getString(COMMENT_ID);
    .....
}
..............

这是我的JSON响应:

  {
成功:1,
消息:一些信息,
结果:
    {
        COMMENT_ID:43906,
        comp_id:116725,
        USER_ID:48322,
        同意:0
        .....
        回复:[...]
    },
    {
        COMMENT_ID:43905,
        comp_id:116725,
        USER_ID:48248,
        同意:0
        .......
        回复:[...]
    }
]}

我所需要的结果JSON Array由USER_ID标记名称排序在解析,如何做到这一点在Android中?


解决方案

 公共静态JSONArray sortJsonArray(JSONArray数组){
    清单<&JSONObject的GT; jsons =新的ArrayList<&JSONObject的GT;();
    的for(int i = 0; I< array.length();我++){
        jsons.add(array.getJSONObject(I));
    }
    Collections.sort(jsons,新的比较<&JSONObject的GT;(){
        @覆盖
        公众诠释比较(LHS的JSONObject,RHS的JSONObject){
            串盖子= lhs.getString(COMMENT_ID);
            字符串摆脱= rhs.getString(COMMENT_ID);
            //在这里,你可以解析字符串ID为整数,然后比较。
            返回lid.compareTo(RID);
        }
    });
    返回新JSONArray(jsons);
}

这件code的可以返回一个排序的JSONArray,但我还是建议你解析的JSONObject到您自己的数据bean,然后做对他们的排序。

How to sort JSONArray by its Tag name with ascending and descending on android.

In my application i have a JSON like the following and need to display the data according to users option(sorting by user_id tag in ascending or descending order). I have parsed the JSON as the following:

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");
    .....
}
..............  

and this is my JSON response:

{
"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": [...]
    }
]

}

I need the "result" JSON Array sorted by the "user_id" tag name while parsing, how to do it in 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);
}

This piece of code could return a sorted JSONArray, but i still recommend you to parse JSONObject to your own data beans, and then do the sorting on them.

这篇关于如何在Android的排序JSONArray的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆