Jackson是一个简单基于Java应用库,可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对较高。
使用前需导入maven依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.7</version>
</dependency>
在如何序列化java对象为json以及json字符串反序列化为java对象的处理上,Jackson常用ObjectMapper这个类。
事例:
public class JacksonTest {
public static void main(String[] args) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
//将Java对象转换成JSON字符串
User zhangsan = User.builder().id(123).name("hzangsan").password("12344").build();
String json1 = objectMapper.writeValueAsString(zhangsan);
System.out.println(json1);
List<String> list = Arrays.asList("aa", "bb", "cc");
String json2 = objectMapper.writeValueAsString(list);
System.out.println(json2);
Map<String, String> map = new HashMap<>();
map.put("zhangsan", "male");
map.put("lisi", "male");
map.put("wangwu", "male");
map.put("mazi","male");
String json3 = objectMapper.writeValueAsString(map);
System.out.println(json3);
//将JSON字符串转换成Java对象
User user = objectMapper.readValue(json1, User.class);
System.out.println(user);
JavaType listType = objectMapper.getTypeFactory().constructParametricType(List.class, String.class);
List<String> l1 = objectMapper.readValue(json2, listType);
System.out.println(l1);
JavaType mapType = objectMapper.getTypeFactory().constructParametricType(Map.class, String.class, String.class);
Map<String, String> mm = objectMapper.readValue(json3, mapType);
Set<Map.Entry<String, String>> entries = mm.entrySet();
for(Map.Entry<String, String> item:entries){
System.out.println(item.getKey() + " " + item.getValue());
}
mm.forEach((k, v)-> System.out.println(k + " :: " + v));
}
}
结果如下图: