问题描述
解决方案
为什么不转换成一个java集合再进行排序呢,排完序再转成json串不得了
解决方案二:
参考这个
[ { ""ID"": ""135""Name"": ""Fargo Chan"" }
{ ""ID"": ""432""Name"": ""Aaron Luke"" }
{ ""ID"": ""252""Name"": ""Dilip Singh"" }];
按照id 来排序
String jsonArrStr = ""[ { ""ID"": ""135"" ""Name"": ""Fargo Chan"" }{ ""ID"": ""432"" ""Name"": ""Aaron Luke"" }{ ""ID"": ""252"" ""Name"": ""Dilip Singh"" }]""; JSONArray jsonArr = new JSONArray(jsonArrStr); JSONArray sortedJsonArray = new JSONArray(); List<JSONObject> jsonValues = new ArrayList<JSONObject>(); for (int i = 0; i < jsonArr.length(); i++) { jsonValues.add(jsonArr.getJSONObject(i)); } Collections.sort( jsonValues new Comparator<JSONObject>() { //You can change ""Name"" with ""ID"" if you want to sort by ID private static final String KEY_NAME = ""Name""; @Override public int compare(JSONObject a JSONObject b) { String valA = new String(); String valB = new String(); try { valA = (String) a.get(KEY_NAME); valB = (String) b.get(KEY_NAME); } catch (JSONException e) { //do something } return valA.compareTo(valB); //if you want to change the sort order simply use the following: //return -valA.compareTo(valB); } }); for (int i = 0; i < jsonArr.length(); i++) { sortedJsonArray.put(jsonValues.get(i)); }
解决方案三:
json里面是数组数组里面有三个对象,最简单的方法循环把对象拿出来冒泡比较一下。只不过在比较的时候你需要选择出自己对象两个字段的较大值。
代码是符合确定比较列的情况下的。你自己改一下,
/*
@function JsonSort 对json排序
@param json 用来排序的json
@param key 排序的键值
*/
function JsonSort(jsonkey){
for(var j=1jl=json.length;j < jl;j++){
var temp = json[j] //第二个对象
val = temp[key]
i = j-1;
while(i >=0 && json[i][key]>val){ //用第二个和第一个比较
json[i+1] = json[i];
i = i-1;
}
json[i+1] = temp;
}return json;
}
var json = JsonSort(willSort'key');
时间: 2024-09-28 03:15:50