jsonArray中按字段排序
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Demo {
public static void main(String[] args) {
String jsonArrStr = "[{\"ID\":\"A01\",\"Name\":\"张三\",\"Score\":88},{\"ID\":\"A02\",\"Name\":\"李四\",\"Score\":99},{\"ID\":\"A01\",\"Name\":\"王五\",\"Score\":77}]";        System.out.println("排序前:" + jsonArrStr);
String jsonArraySort = jsonArraySort(jsonArrStr);
System.out.println("排序后:" + jsonArraySort);
}
public static String jsonArraySort(String jsonArrStr) {
// json字符串转为JSONArray
JSONArray jsonArr = JSON.parseArray(jsonArrStr);
fastjson字符串转数组//存放排序结果json数组
JSONArray sortedJsonArray = new JSONArray();
// ⽤于排序的list
List<JSONObject> list = new ArrayList<JSONObject>();
//遍历待排序的json数组,并将数据放⼊list
for (int i = 0; i < jsonArr.size(); i++) {
list.JSONObject(i));
}
Collections.sort(list, new Comparator<JSONObject>() {
//排序字段
private static final String KEY_NAME1 = "ID";
private static final String KEY_NAME2 = "Score";
@Override
public int compare(JSONObject a, JSONObject b) {
String valA1 = new String();
String valA2 = new String();
String valB1 = new String();
String valB2 = new String();
try {
valA1 = a.getString(KEY_NAME1);
valA2 = b.getString(KEY_NAME1);
valB1 = a.getString(KEY_NAME2);
valB2 = b.getString(KEY_NAME2);
} catch (JSONException e) {
System.out.println(e);
}
// 设置排序规则
int i = valA1pareTo(valA2);
if (i == 0) {
int j = valB1pareTo(valB2);
return j;
}
return i;
}
});
//将排序后结果放⼊结果jsonArray
for (int i = 0; i < jsonArr.size(); i++) {
sortedJsonArray.(i));
}
String();
}
}
结果:
排序前:[{"ID":"A01","Name":"张三","Score":88},{"ID":"A02","Name":"李四","Score":99},{"ID":"A01","Name":"王五","Score":77}]
排序后:[{"Score":77,"ID":"A01","Name":"王五"},{"Score":88,"ID":"A01","Name":"张三"},{"Score":99,"ID":"A02","Name":"李四"}] Lambda 表达式
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.Comparator;
public class Test2 {
public static void main(String[] args) {
String str = "[{\"score\":77,\"id\":\"A04\"},{\"score\":88,\"id\":\"A01\"},{\"score\":66,\"id\":\"A01\"}]";
System.out.println("排序前: " + str);
JSONArray array = JSON.parseArray(str);
for (Object arr : array) {
System.out.println(arr);
}
/
/ ⽅式⼀
//        array.sort(Comparatorparing(obj -> ((JSONObject)obj).getInteger("score")));
//        array.sort(Comparatorparing(e-> ((JSONObject)e).getString("id")));
// ⽅式⼆:单字段排序
//        array.sort((a, b) -> ((JSONObject) a).getString("id")pareTo(((JSONObject) b).getString("id")));
// ⽅式⼆:多字段排序
array.sort((a, b) -> {
int i = ((JSONObject) a).getString("id")pareTo(((JSONObject) b).getString("id"));
if (i == 0) {
int j = ((JSONObject) a).getInteger("score")pareTo(((JSONObject) b).getInteger("score"));
return j;
}
return i;
});
System.out.println("排序后: " + array);
for (Object arr : array) {
System.out.println(arr);
}
}
}
结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。