能发外链的网站,wordpress折叠代码,泗水网站建设ys178,每天推荐新设计的网站在这篇文章中#xff0c;我将向您展示如何使用Jackson-databind API来实现Java对象与JSON之间的绑定#xff0c;以及如何将JSON数据转换为Java对象。
对于Java开发者来说#xff0c;将JSON转换为Java对象及反向操作是一个常见的任务#xff0c;因此我将通过示例演示如何完…在这篇文章中我将向您展示如何使用Jackson-databind API来实现Java对象与JSON之间的绑定以及如何将JSON数据转换为Java对象。
对于Java开发者来说将JSON转换为Java对象及反向操作是一个常见的任务因此我将通过示例演示如何完成这些操作。
ObjectMapper类提供了读写JSON的功能可以将基本的POJOPlain Old Java Object序列化为JSON格式字符串或者从JSON字符串反序列化为POJO。
依赖项
在开始之前我们需要定义所需的Jackson API依赖项。让我们首先在pom.xml文件中添加以下依赖项
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.8/version
/dependency此依赖项还会自动引入以下库到类路径中
jackson-annotations-2.9.8.jarjackson-core-2.9.8.jarjackson-databind-2.9.8.jar
建议始终使用Maven中央仓库中的最新版本。
将Java对象转换为JSON示例
下面是一个使用ObjectMapper.writeValueXXX()方法将Java对象转换为JSON的例子。
Post.java
package net.javaguides.jackson.pojotojson;import java.util.Date;
import java.util.HashSet;
import java.util.Set;public class Post {private Long id;private String title;private String description;private String content;private Date postedAt new Date();private Date lastUpdatedAt new Date();private SetTag tags new HashSet();// 构造函数、getter和setter省略
}Tag.java
package net.javaguides.jackson.pojotojson;public class Tag {private Long id;private String name;// 构造函数、getter和setter省略
}JacksonPojoToJson.java
package net.javaguides.jackson.pojotojson;import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;/*** 使用Jackson API将Java对象转换为JSON* author Ramesh Fadatare*/
public class JacksonPojoToJson {public static void main(String[] args) throws IOException {// 创建ObjectMapper实例ObjectMapper mapper new ObjectMapper();mapper.enable(SerializationFeature.INDENT_OUTPUT);// 创建一个Post对象Post post new Post();post.setTitle(Jackson JSON API Guide);post.setId(100L);post.setDescription(Post about Jackson JSON API);post.setContent(HTML content here);post.setLastUpdatedAt(new Date());post.setPostedAt(new Date());// 创建一些预定义的标签SetTag tags new HashSet();tags.add(new Tag(1L, Java));tags.add(new Tag(2L, Jackson));tags.add(new Tag(3L, JSON));// 设置标签给帖子post.setTags(tags);// 将对象转换为JSON字符串String postJson mapper.writeValueAsString(post);System.out.println(postJson);// 将JSON字符串保存到文件FileOutputStream fileOutputStream new FileOutputStream(post.json);mapper.writeValue(fileOutputStream, post);fileOutputStream.close();}
}输出结果如下
{id : 100,title : Jackson JSON API Guide,description : Post about Jackson JSON API,content : HTML content here,postedAt : 1556025668077,lastUpdatedAt : 1556025668077,tags : [ {id : 3,name : JSON}, {id : 1,name : Java}, {id : 2,name : Jackson} ]
}注意我们也可以将JSON写入外部文件。在这个例子中我们将JSON写入名为post.json的文件。
将JSON转换为Java对象
下面是一个使用ObjectMapper.readValue()方法将JSON转换为Java对象的例子。在这个例子中我们将从外部post.json文件读取JSON并将其转换成Java对象。
JacksonJsonToPojo.java
package net.javaguides.jackson.jsontopojo;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;import net.javaguides.jackson.pojotojson.Post;
import net.javaguides.jackson.pojotojson.Tag;/*** 使用Jackson将JSON转换为Java对象* author Ramesh Fadatare*/
public class JacksonJsonToPojo {public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {ObjectMapper mapper new ObjectMapper();// 读取JSON文件并转换为Java对象InputStream fileInputStream new FileInputStream(post.json);Post post mapper.readValue(fileInputStream, Post.class);fileInputStream.close();// 打印帖子详情System.out.println(打印帖子详情);System.out.println(post.getId());System.out.println(post.getTitle());System.out.println(post.getDescription());System.out.println(post.getContent());System.out.println(post.getLastUpdatedAt());System.out.println(post.getPostedAt());// 打印这个帖子的标签System.out.println(打印帖子的标签详情 post.getTitle());for (IteratorTag iterator post.getTags().iterator(); iterator.hasNext();) {Tag tag iterator.next();System.out.println(tag.getId());System.out.println(tag.getName());}}
}输出结果如下
打印帖子详情
100
Jackson JSON API Guide
Post about Jackson JSON API
HTML content here
Tue Apr 23 18:51:08 IST 2019
Tue Apr 23 18:51:08 IST 2019
打印帖子的标签详情Jackson JSON API Guide
2
Jackson
1
Java
3
JSON