以下所说的都是依据fastjson来说的,只是一个工作遇到问题的随笔
遇到的问题是我要把两个JSONObject进行比对,如果两个JSONObject里面的值不一样,需要吧后面的值,转到前面去,只是工作随笔,如果对您没有帮助,不喜勿喷。
private String instance(String newQuota,String oldQuota){ if(StringUtils.isEmpty(oldQuota)){ newQuota = "{\"va\":{\"total\":0,\"used\":0},\"vb\":{\"total\":0,\"used\":0},\"vc\":{\"total\":0,\"used\":0}}"; } JSONObject jsonObjectNew = JSONObject.parseObject(newQuota); JSONObject jsonObjectOld = JSONObject.parseObject(oldQuota); Set<String> newQuotaKeys = jsonObjectNew.keySet(); for(String str:newQuotaKeys){ if(str.equals("va")){ instance2(jsonObjectOld,jsonObjectNew,str); }else if(str.equals("vb")){ instance2(jsonObjectOld,jsonObjectNew,str); }else if(str.equals("vc")){ instance2(jsonObjectOld,jsonObjectNew,str); } } return jsonObjectOld.toString(); }
private void instance2(JSONObject jsonObjectOld,JSONObject jsonObjectNew,String str){ JSONObject oldQuotaVal = jsonObjectOld.getJSONObject(str); JSONObject newQuotaVal = jsonObjectNew.getJSONObject(str); if(oldQuotaVal==null){ jsonObjectOld.put(str,newQuotaVal);//记住这个地方一定是吧JSONObject的newQuotaVal给放进去,如果方式转成string类型再放进去的话就不是json格式了, //会多转义符"\"主要记录的就是这一点 }else{ Integer newApplyTotal = newQuotaVal.getInteger("total"); oldQuotaVal.put("total",newApplyTotal); Integer newApplyUsed = newQuotaVal.getInteger("used"); oldQuotaVal.put("used",newApplyUsed); } }