JSON前后台對接數據的調試特別麻煩,最近客戶對Json格式要求Key值小寫,網絡狂搜 用了JSON 的 config發現只能最外層改變,
只能寫個遞歸來講所有key值換成小寫。
import java.util.Iterator; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JSONtoLowerTools { public static JSONObject transObject(JSONObject o1){ JSONObject o2=new JSONObject(); Iterator it = o1.keys(); while (it.hasNext()) { String key = (String) it.next(); Object object = o1.get(key); if(object.getClass().toString().endsWith("String")){ o2.accumulate(key.toLowerCase(), object); }else if(object.getClass().toString().endsWith("JSONObject")){ o2.accumulate(key.toLowerCase(), JSONtoLowerTools.transObject((JSONObject)object)); }else if(object.getClass().toString().endsWith("JSONArray")){ o2.accumulate(key.toLowerCase(), JSONtoLowerTools.transArray(o1.getJSONArray(key))); } } return o2; } public static JSONArray transArray(JSONArray o1){ JSONArray o2 = new JSONArray(); for (int i = 0; i < o1.length(); i++) { Object jArray=o1.getJSONObject(i); if(jArray.getClass().toString().endsWith("JSONObject")){ o2.put(JSONtoLowerTools.transObject((JSONObject)jArray)); }else if(jArray.getClass().toString().endsWith("JSONArray")){ o2.put(JSONtoLowerTools.transArray((JSONArray)jArray)); } } return o2; } }