JAVA使用jackson自带方法比对两个json串是否一样(支持对象嵌套)
没有的话就引入依赖
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.10.1</version> </dependency>
这种方式忽略顺序 ,顺序不一样 ,内容一样,也会返回true
/** * 比较两个json串是否相同 * @param currJson 当前json * @param oldJson 旧的json * @return true 表示一样,false表示不一样,默认返回 false */ public static boolean checkJsonModify(String currJson, String oldJson) { try { ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode1 = objectMapper.readTree(currJson); JsonNode jsonNode2 = objectMapper.readTree(oldJson); boolean equals = jsonNode1.equals(jsonNode2); return equals; } catch (JsonProcessingException e) { e.printStackTrace(); } return false; }
自定义比较器
JsonComparator.java
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.NumericNode; import com.fasterxml.jackson.databind.node.TextNode; import java.util.Comparator; public class JsonComparator implements Comparator<JsonNode> { @Override public int compare(JsonNode o1, JsonNode o2) { if (o1.equals(o2)) { return 0; } if ((o1 instanceof TextNode) && (o2 instanceof TextNode)) { //字符串类型 String s1 = o1.asText(); String s2 = o2.asText(); //忽略大小写 if (s1.equalsIgnoreCase(s2)) { return 0; } } if ((o1 instanceof NumericNode) && (o2 instanceof NumericNode)){ //数字类型 Double d1 = o1.asDouble(); Double d2 = o2.asDouble(); if (d1.compareTo(d2) == 0) { return 0; } } return 1; } }
使用方式
JsonComparator jsonComparator=new JsonComparator(); System.out.println(jsonNode1.equals(jsonComparator,jsonNode2));//true
-----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------
(蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)
分类:
JAVA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-03-23 POI导出excel报错:The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook