我正在开发一个Android应用程序,在我的一些代码中,我想按照降序中的一些值对JsonObject进行排序。
"smileys": {
"2": {
"image_icon": "http://devaddons1.socialengineaddons.com/mobiledemotesting/public/system/a2/39/01/1376a_0d1e.png?c=4a00",
"id": 2,
"count": 1
},
"3": {
"image_icon": "http://devaddons1.socialengineaddons.com/mobiledemotesting/public/system/a4/39/01/1376c_35c0.png?c=59a3",
"id": 3,
"count": 2
},
"4": {
"image_icon": "http://devaddons1.socialengineaddons.com/mobiledemotesting/public/system/a6/39/01/1376e_2019.png?c=f190",
"id": 4,
"count": 1
}
},
我想基于键值“count”对这个JsonObject进行排序,以便具有更高计数的JsonObject将首先出现,依此类推。 我已经使用以下代码尝试了它
ArrayList<JSONObject> array = new ArrayList<>();
JSONArray smileyKeys = smileyArrays.names();
for (int i = 0; i < smileyArrays.length(); i++) {
try {
array.add(smileyArrays.getJSONObject(smileyKeys.optString(i)));
} catch (JSONException e) {
e.printStackTrace();
}
}
Collections.sort(array, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject lhs, JSONObject rhs) {
// TODO Auto-generated method stub
try {
if(lhs.optInt("count") < rhs.getInt("count") ){
return 1;
} else {
return -1;
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
}
});
JSONArray jsonArray = new JSONArray(array);
JsonObject smileysSortedAdday = jsonArray.optJSONObject(0);
但它不能使用JsonObject,我无法在JsonArray中转换它。有人可以指导我如何实现这一目标。
非常感谢先进。