1.首先明确一点,由于JSON中可能含有JSON或者JSONArray,所以JSON迭代必须用递归函数做
public JSONObject replaceAssetValue(JSONObject request){//将key全部替换成newKey;
Iterator<String> keys=request.keySet().iterator();
JSONObject resp=new JSONObject();//需要新建JSON,否则在迭代过程中会报错
resp.putAll(request);
while(keys.hasNext()){
String key=keys.next();
if(key.equals("key")){//参数为String格式,直接替换
resp.remove(key);
resp.put("newKey",request.getString(key));
}
if(request.get(key) instanceof JSONObject){//有参数是JSON格式,进行迭代
JSONObject keyJSon= replaceAssetValue(request.getJSONObject(key));
resp.replace(key,keyJSon);
}
if(request.get(key) instanceof JSONArray){//参数为JSONArray格式
JSONArray keyArray=request.getJSONArray(key);
JSONArray respArray=new JSONArray();
for(int i=0;i<keyArray.size();i++){
JSONObject keyObject=replaceAssetValue(keyArray.getJSONObject(i));
respArray.add(keyObject);
}
resp.replace(key,respArray);
}
}
return resp;
}
2.由于Iterator在迭代过程中不能进行remove或者add操作,所以我们不能对原JSON进行操作,需要新建JSON操作,然后返回