全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java下利用Jackson进行JSON解析和序列化示例

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小时内与您取得联系。