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;
    }    
}