一般来说,使用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:
推荐一个将JSON字符串格式化的工具:http://pro.jsonlint.com/
当你拿到一堆复杂没有格式化的JSON字符串时,很难看清其中的结构,从而不能更快的创建POJO类,使用这个工具就一目了然了。
同时,这里也像上篇一样,提供一份Online Doc(v2.2.2):点击这里。