使用Jackson的JSON包,判断JSON是否相等

来源:互联网 发布:java培训机构排名 编辑:程序博客网 时间:2024/05/15 23:45

一般来说,使用google贡献的Gson包完全可以实现这个功能,但是由于某种原因(copyright or else,said by mentor Yang),这里使用Jackson提供的JSON包实现,这个实现也非常强大。


1. 首先需要下载jar包:jackson-databind-2.4.4.jar jackson-annotations-2.4.4.jar jackson-core-2.4.2.jar,

网址在:http://wiki.fasterxml.com/JacksonDownload 


2.实现判断功能

2.1  不使用POJO类

import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.ObjectMapper;String str1 = "{\"properties\":{\"packet\":{\"recorded_at\":\"2015-09-02 04:45:45 +0000\",\"userId\":\"100000000000001\",\"meta\":{\"account\":\"xxx\",\"event\":\"track\"},\"fields\":{\"gyroData\":{\"rotation_y\":-1,\"rotation_z\":-1,\"rotation_x\":-1},\"accelerometerData\":{\"acceleration_x\":-1,\"acceleration_z\":-1,\"acceleration_y\":-1},\"location\":{\"speed\":4.68,\"speed_course\":0.7,\"horizontal_accuracy\":10,\"longtitude\":-122.02359082,\"vertical_accuracy\":-1,\"latitude\":37.33385024},\"pedometerData\":{\"step_count\":0}},\"recorded_sample_rate\":5}},\"geometry\":{\"type\":\"Point\",\"coordinates\":[37.33385024,-122.02359082]},\"type\":\"Feature\"}";String str2 = "{\"properties\":{\"packet\":{\"recorded_at\":\"2015-09-02 04:45:45 +0000\",\"userId\":\"100000000000001\",\"meta\":{\"account\":\"xxx\",\"event\":\"track\"},\"fields\":{\"gyroData\":{\"rotation_y\":-1,\"rotation_z\":-1,\"rotation_x\":-1},\"accelerometerData\":{\"acceleration_x\":-1,\"acceleration_z\":-1,\"acceleration_y\":-1},\"location\":{\"speed\":4.68,\"speed_course\":0.7,\"horizontal_accuracy\":10,\"longtitude\":-122.02359082,\"vertical_accuracy\":-1,\"latitude\":37.33385024},\"pedometerData\":{\"step_count\":0}},\"recorded_sample_rate\":5}},\"geometry\":{\"type\":\"Point\",\"coordinates\":[37.33385024,-122.02359082]},\"type\":\"Feature\"}";    ObjectMapper mapper = new ObjectMapper();    JsonNode doc = mapper.readTree(str1);     ObjectMapper mapper1 = new ObjectMapper();    JsonNode doc1 = mapper1.readTree(str2);     System.out.println(doc.equals(doc1));

2.2 使用POJO类

还是将POJO类中的属性和JSON中的key名称一一对应。

主要就是ObjectMapper的使用。

ObjectMapper mapper = new ObjectMapper();Bean bean = mapper.readValue(new File("custom.json"), Bean.class);

具体请参考下面链接,reference:

使用Jackson框架解析Json示例


推荐一个将JSON字符串格式化的工具:http://pro.jsonlint.com/

当你拿到一堆复杂没有格式化的JSON字符串时,很难看清其中的结构,从而不能更快的创建POJO类,使用这个工具就一目了然了。


同时,这里也像上篇一样,提供一份Online Doc(v2.2.2):点击这里。

0 0