按key排序ASCII
private static String recursiveKeySort(JsonObject json) {
StringBuilder appender = new StringBuilder();
appender.append("{");
Iterator<String> keys = new TreeSet<>(json.keySet()).iterator();
boolean isFirstEle = true;
while (keys.hasNext()) {
if (!isFirstEle) {
appender.append(",");
}
String key = keys.next();
Object val = json.get(key);
if (val instanceof JsonObject) {
appender.append("\"").append(key).append("\":");
appender.append(recursiveKeySort((JsonObject)val));
} else if (val instanceof JsonArray) {
JsonArray jarray = (JsonArray)val;
appender.append("\"").append(key).append("\":[");
boolean isFirstArrEle = true;
for (int i = 0; i < jarray.size(); i++) {
if (!isFirstArrEle) {
appender.append(",");
}
Object obj = jarray.get(i);
if (obj instanceof JsonObject) {
appender.append(recursiveKeySort((JsonObject)obj));
} else {
appender.append(obj.toString());
}
isFirstArrEle = false;
}
appender.append("]");
} else {
String value = val.toString();
appender.append("\"").append(key).append("\":").append(value);
}
isFirstEle = false;
}
appender.append("}");
return appender.toString();
}