Java下常见的Json类库有Gson、JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法。

一、准备工作
首先去官网下载Jackson工具包。Jackson有1.x系列和2.x系列,截止目前2.x系列的最新版本是2.2.3,2.x系列有3个jar包需要下载:
jackson-core-2.2.3.jar(核心jar包,下载地址)
jackson-annotations-2.2.3.jar(该包提供Json注解支持,下载地址)
jackson-databind-2.2.3.jar(下载地址)
//JSON序列化和反序列化使用的User类
import java.util.Date;
public class User {
private String name;
private Integer age;
private Date birthday;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
二、JAVA对象转JSON[JSON序列化]
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonDemo {
public static void main(String[] args) throws ParseException, IOException {
User user = new User();
user.setName("小民");
user.setEmail("xiaomin@sina.com");
user.setAge(20);
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
user.setBirthday(dateformat.parse("1996-10-01"));
/**
* 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序列,并把结果输出成字符串。
*/
ObjectMapper mapper = new ObjectMapper();
//User类转JSON
//输出结果:{"name":"小民","age":20,"birthday":844099200000,"email":"xiaomin@sina.com"}
String json = mapper.writeValueAsString(user);
System.out.println(json);
//Java集合转JSON
//输出结果:[{"name":"小民","age":20,"birthday":844099200000,"email":"xiaomin@sina.com"}]
List<User> users = new ArrayList<User>();
users.add(user);
String jsonlist = mapper.writeValueAsString(users);
System.out.println(jsonlist);
}
}
三、JSON转Java类[JSON反序列化]
import java.io.IOException;
import java.text.ParseException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonDemo {
public static void main(String[] args) throws ParseException, IOException {
String json = "{\"name\":\"小民\",\"age\":20,\"birthday\":844099200000,\"email\":\"xiaomin@sina.com\"}";
/**
* ObjectMapper支持从byte[]、File、InputStream、字符串等数据的JSON反序列化。
*/
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println(user);
}
}
四、JSON注解
Jackson提供了一系列注解,方便对JSON序列化和反序列化进行控制,下面介绍一些常用的注解。
@JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。
@JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。
@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。
import java.util.Date;
import com.fasterxml.jackson.annotation.*;
public class User {
private String name;
//不JSON序列化年龄属性
@JsonIgnore
private Integer age;
//格式化日期属性
@JsonFormat(pattern = "yyyy年MM月dd日")
private Date birthday;
//序列化email属性为mail
@JsonProperty("mail")
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonDemo {
public static void main(String[] args) throws ParseException, IOException {
User user = new User();
user.setName("小民");
user.setEmail("xiaomin@sina.com");
user.setAge(20);
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
user.setBirthday(dateformat.parse("1996-10-01"));
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user);
System.out.println(json);
//输出结果:{"name":"小民","birthday":"1996年09月30日","mail":"xiaomin@sina.com"}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# jackson解析json
# jackson解析json文件
# java
# json
# jackson
# springboot jackson自定义序列化和反序列化实例
# SpringBoot @JsonDeserialize自定义Json序列化方式
# jackson使用@JsonSerialize格式化BigDecimal解决.00不显示问题
# SpringMVC Json自定义序列化和反序列化的操作方法
# 如何自定义Jackson序列化 @JsonSerialize
# 序列化
# 下载地址
# 转成
# 并把
# 并保存
# 是在
# 多个
# 工具包
# 另外一个
# 本是
# 转化为
# 准备工作
# 官网
# 大家多多
# 操作方法
# 把该
# 类库
# age
# birthday
# email
相关文章:
如何在建站之星绑定自定义域名?
建站主机核心功能解析:服务器选择与网站搭建流程指南
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
如何批量查询域名的建站时间记录?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
建站之星免费模板:自助建站系统与智能响应式一键生成
建站之星上传入口如何快速找到?
建站主机与服务器功能差异如何区分?
魔方云NAT建站如何实现端口转发?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
建站主机解析:虚拟主机配置与服务器选择指南
网站图片在线制作软件,怎么在图片上做链接?
建站之星安装后如何配置SEO及设计样式?
XML的“混合内容”是什么 怎么用DTD或XSD定义
表情包在线制作网站免费,表情包怎么弄?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
制作网站的模板软件,网站怎么建设?
如何选择高效稳定的ISP建站解决方案?
完全自定义免费建站平台:主题模板在线生成一站式服务
如何正确选择百度移动适配建站域名?
活动邀请函制作网站有哪些,活动邀请函文案?
建站之星安装模板失败:服务器环境不兼容?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
高防服务器:AI智能防御DDoS攻击与数据安全保障
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
如何获取PHP WAP自助建站系统源码?
建站之星×万网:智能建站系统+自助建站平台一键生成
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
如何在Tomcat中配置并部署网站项目?
动图在线制作网站有哪些,滑动动图图集怎么做?
如何通过西部数码建站助手快速创建专业网站?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
北京网站制作公司哪家好一点,北京租房网站有哪些?
成都网站制作报价公司,成都工业用气开户费用?
如何通过免费商城建站系统源码自定义网站主题与功能?
三星网站视频制作教程下载,三星w23网页如何全屏?
PHP 500报错的快速解决方法
济南网站建设制作公司,室内设计网站一般都有哪些功能?
Java解压缩zip - 解压缩多个文件或文件夹实例
Python lxml的etree和ElementTree有什么区别
岳西云建站教程与模板下载_一站式快速建站系统操作指南
建站之星后台密码遗忘或太弱?如何重置与强化?
大型企业网站制作流程,做网站需要注册公司吗?
招商网站制作流程,网站招商广告语?
大连网站制作公司哪家好一点,大连买房网站哪个好?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
*请认真填写需求信息,我们会在24小时内与您取得联系。