包含嵌套在内的json数据也会一起排序,
json的底层其实就是map 此方法是将传入的json包括嵌套在内的json的底层map替换为了 TreeMap(TreeMap实现了SortedMap接口,保证了有序性) 从而保证了key的顺序性
当然也可以自己重写comparator方法进行自定义排序
package cn.wcy.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import java.util.*;
public class JSONUtil {
public static JSONObject getSortJson(JSONObject json) {
if (Objects.isNull(json)) {
return new JSONObject();
}
Set<String> keySet = json.keySet();
SortedMap<String, Object> map = new TreeMap<>();
for (String key:keySet) {
Object value = json.get(key);
if (Objects.nonNull(value) && value instanceof JSONArray) {
JSONArray array = json.getJSONArray(key);
JSONArray jsonArray = new JSONArray(new LinkedList<>());
for (int i=0;i<array.size();i++) {
JSONObject sortJson = getSortJson(array.getJSONObject(i));
jsonArray.add(sortJson);
}
map.put(key, jsonArray);
} else if (Objects.nonNull(value) && value instanceof JSONObject) {
JSONObject sortJson = getSortJson(json.getJSONObject(key));
map.put(key, sortJson);
} else {
map.put(key, value);
}
}
return new JSONObject(map);
}
}