Jackson包含了一个核心的jar包和其他两个依赖于核心jar包的jar包,三者的依赖关系是从上到下的,如下:
Jackson Core
Jackson Annotations
Jackson Databind
Streaming : jackson-core jar,定义了底层的streaming API和实现了Json特性。
Annotations: jackson-annotations jar,包含了标准的Jackson注解。
Databind : jackson-databind jar,实现了数据绑定和对象序列化,它依赖于streaming和annotations的包。
可以从从网站下载Jackson的jar包,或者采用maven来管理。如果是maven的方式,需要加入如下的依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>
ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。
ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。
writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。
writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。
writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。
writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。
1.JAVA对象转JSON[JSON序列化]
User user = new User();
user.setName("张三");
user.setEmail("zhangsan@163.com.cn");
user.setAge(28);
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
user.setBirthday(dateformat.parse("1989-10-25"));
ObjectMapper mapper = new ObjectMapper();
//User类转JSON
String json = mapper.writeValueAsString(user);
System.out.println(json);
//输出结果:
/*
{
"name": "张三",
"age": 28,
"birthday": 625276800
"email": "zhangsan@163.com.cn"
}
*/
//Java集合转JSON
List<User> users = new ArrayList<User>();
users.add(user);
String jsonlist = mapper.writeValueAsString(users);
System.out.println(jsonlist);
//输出结果:
/*
[
{
"name": 张三",
"age": 28,
"birthday": 625276800,
"email": "zhangsan@163.com.cn"
}
]
*/
2.JSON转Java类[JSON反序列化]
ObjectMapper支持从byte[]、File、InputStream、字符串等数据的JSON反序列化。
String json = "{\"name\":\"张三\",\"age\":28,\"birthday\":625276800,\"email\":\"zhangsan@163.com.cn\"}";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println(user);