1.控制层代码,自己注入对应的service
@ApiOperation("获取两次json数据的差异")
@PostMapping("/getDiff")
public Result getDiff(@RequestBody Map<String,String> data){
String inbedCode=data.get("inbedcode");
//两个json串模拟从前端传入,根据实际需求去获取json
String json1=data.get("json1");
String json2=data.get("json2");
Map<String,String> diff=resultService.selectDiff(inbedCode,json1,json2);
return ResultUtil.success(subList);
}
2service的具体实现逻辑.
public Map<String,String> selectJson(String inbedCode,String oldJson,String newJson){
Map<String,Object> ret=new HashMap<>();
JSONObject medInfoOld= (JSONObject)JSONObject.fromObject(oldJson).get("medInfo");
JSONObject medInfoNew= (JSONObject)JSONObject.fromObject(newJson).get("medInfo");
Iterator<String> oldKeys=medInfoOld.keySet().iterator();
Iterator<String> newKeys=medInfoNew.keySet().iterator();
while(oldKeys.hasNext()){
String next=oldKeys.next;
String oldValue=medInfoOld.get(next);
String newValue=medInfoNew.get(next);
if(!oldValue.equals(newValue)){
ret.put("key",next);
ret.put("oldValue",oldValue);
ret.put("newValue",newValue);
}
}
return ret;
}
只有一层的业务逻辑是上面这样的
如果json是多个层次的节点的话需要拆分重组再遍历