全网整合营销服务商

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

免费咨询热线: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 


相关文章: 免费ppt制作网站,有没有值得推荐的免费PPT网站?  如何制作网站标识牌,动态网站如何制作(教程)?  如何在万网自助建站中设置域名及备案?  网站制作说明怎么写,简述网页设计的流程并说明原因?  建站之星客服服务时间及联系方式如何?  建站之星图片链接生成指南:自助建站与智能设计教程  电商平台网站制作流程,电商网站如何制作?  C#怎么创建控制台应用 C# Console App项目创建方法  建站之星后台管理:高效配置与模板优化提升用户体验  小型网站建站如何选择虚拟主机?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何在阿里云服务器自主搭建网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  SQL查询语句优化的实用方法总结  动图在线制作网站有哪些,滑动动图图集怎么做?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  如何在Windows虚拟主机上快速搭建网站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  建站10G流量真的够用吗?如何应对访问高峰?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  海南网站制作公司有哪些,海口网是哪家的?  盘锦网站制作公司,盘锦大洼有多少5G网站?  建站之星安装需要哪些步骤及注意事项?  定制建站流程解析:需求评估与SEO优化功能开发指南  如何用VPS主机快速搭建个人网站?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  微信h5制作网站有哪些,免费微信H5页面制作工具?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  html制作网站的步骤有哪些,iapp如何添加网页?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  建站之星logo尺寸如何设置最合适?  ,怎么在广州志愿者网站注册?  ,柠檬视频怎样兑换vip?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  建站为何优先选择香港服务器?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  建站主机解析:虚拟主机配置与服务器选择指南  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  h5网站制作工具有哪些,h5页面制作工具有哪些?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  宁波自助建站系统如何快速打造专业企业网站?  北京网站制作公司哪家好一点,北京租房网站有哪些?  ,想在网上投简历,哪几个网站比较好?  建站主机如何选?高性价比方案全解析  为什么Go需要go mod文件_Go go mod文件作用说明 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。