Jackson Json工具的使用总结
Jackson的主要模块
- Streaming jackson-core 定义了低级流式处理 API,并包括特定于 JSON 的实现
- Annotations jackson-annotations 包含标准的 Jackson 注释
- Databind jackson-databind 实现数据绑定,依赖于streaming和Annotations
使用例子
在缓存中序列化和反序列化
在缓存的场景下,在反序列化时,需要创建与序列化时相同的类对象。 这种情况下需要在序列化时写入对象的类型信息。
进行如下配置:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.activateDefaultTyping(BasicPolymorphicTypeValidator
.builder()
.allowIfBaseType(Object.class)
.build(), ObjectMapper.DefaultTyping.NON_FINAL);
序列化后的数据中带有类型信息
JsonNode获取
String json = "{\"a\": 1, \"b\":{\"c\":2}}";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode node = objectMapper.readTree(json);
System.out.println(node.path("b").path("d").asText(""));//不会报空指针
System.out.println(node.path("b").path("c").asText(""));
从JsonNode获取节点时有2种情况:1. node不存在,get方法返回null,path方法会返回MissingNode;2. 节点的值为null,此时会返回一个NullNode
使用path而不是get方法可以避免NPE

浙公网安备 33010602011771号