JSONObjectのkey値の修正
1477 ワード
JSONフロントバックグラウンドのデータのデバッグは特に面倒で、最近する要求はJsonのKey値が小文字でなければならない.entity(エンティティークラス)に注記@JSOnField(name="XXXX")を追加することで、変換されたjsonのkey値が小文字になることも可能ですが、一つ一つ書くのは面倒すぎます.すべてのkey値を再帰的に小文字に変換するものがネット上に見つかった.https://www.cnblogs.com/lgtrajectory/p/4080852.html
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class JSONTools {
public static JSONObject transObject(JSONObject o1){
JSONObject o2=new JSONObject();
o1.forEach((key, value) -> {
if(value.getClass().toString().endsWith("JSONObject")){
o2.put(key.toLowerCase(), transObject((JSONObject)value));
}else if(value.getClass().toString().endsWith("JSONArray")){
o2.put(key.toLowerCase(), transArray(o1.getJSONArray(key)));
}else{
o2.put(key.toLowerCase(), value);
}
});
return o2;
}
public static JSONArray transArray(JSONArray o1){
JSONArray o2 = new JSONArray();
for (int i = 0; i < o1.size(); i++) {
Object jArray=o1.getJSONObject(i);
if(jArray.getClass().toString().endsWith("JSONObject")){
o2.add(transObject((JSONObject)jArray));
}else if(jArray.getClass().toString().endsWith("JSONArray")){
o2.add(transArray((JSONArray)jArray));
}
}
return o2;
}
}