博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java对象与json字串相互转化
阅读量:7239 次
发布时间:2019-06-29

本文共 3745 字,大约阅读时间需要 12 分钟。

简介:

Jackson是一个流行的基于Java的JSON处理框架

官方wiki:

官方文档:

学习参考: 系列,顺便也学习一下GSON

 

本篇简介如何使用Jackson进行Java对象与JSON的互相转换

新建基本Student类:

Java代码  
  1. package com.jingshou.pojo;  
  2.   
  3. import java.util.Date;  
  4.   
  5. public class Student {  
  6.     private int id;  
  7.     private String name;  
  8.     private Date birthDay;  
  9.   
  10.     public int getId() {  
  11.         return id;  
  12.     }  
  13.   
  14.     public void setId(int id) {  
  15.         this.id = id;  
  16.     }  
  17.   
  18.     public String getName() {  
  19.         return name;  
  20.     }  
  21.   
  22.     public void setName(String name) {  
  23.         this.name = name;  
  24.     }  
  25.   
  26.     public Date getBirthDay() {  
  27.         return birthDay;  
  28.     }  
  29.   
  30.     public void setBirthDay(Date birthDay) {  
  31.         this.birthDay = birthDay;  
  32.     }  
  33.   
  34.     @Override  
  35.     public String toString() {  
  36.         return "Student [birthDay=" + birthDay + ", id=" + id + ", name="  
  37.                 + name + "]";  
  38.     }  
  39.   
  40. }  

 班级类:

Java代码  
  1. package com.jingshou.pojo;  
  2.   
  3. import java.util.List;  
  4.   
  5. public class Class {  
  6.     private String cname;  
  7.     private List<Student> members;  
  8.     public String getCname() {  
  9.         return cname;  
  10.     }  
  11.     public void setCname(String cname) {  
  12.         this.cname = cname;  
  13.     }  
  14.     public List<Student> getMembers() {  
  15.         return members;  
  16.     }  
  17.     public void setMembers(List<Student> members) {  
  18.         this.members = members;  
  19.     }  
  20.       
  21.     public String toString(){  
  22.         return "The Class Name is: " + cname + " " + "The members are: " + members;  
  23.           
  24.     }  
  25.       
  26.   
  27. }  

测试代码:

Java代码  
  1. package com.jingshou.jackson;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.ArrayList;  
  5. import java.util.Date;  
  6. import java.util.List;  
  7.   
  8. import com.fasterxml.jackson.databind.ObjectMapper;  
  9. import com.jingshou.pojo.Class;  
  10. import com.jingshou.pojo.Student;  
  11.   
  12. public class JacksonTest1 {  
  13.   
  14.     public static void main(String[] args) throws IOException {  
  15.         Student student1 = new Student();    
  16.         student1.setId(5237);  
  17.         student1.setName("jingshou");  
  18.         student1.setBirthDay(new Date());  
  19.           
  20.         ObjectMapper mapper = new ObjectMapper();  
  21.           
  22.         // Convert object to JSON string  
  23.         String Json =  mapper.writeValueAsString(student1);  
  24.         System.out.println("Change Object to JSON String: " + Json);  
  25.           
  26.         // Convert Json string to Object  
  27.         Student student2 = mapper.readValue(Json, Student.class);  
  28.         System.out.println(student2);  
  29.           
  30.         // Create a student list add it to Bj  
  31.         Student student3 = new Student();    
  32.         student3.setId(5117);    
  33.         student3.setName("saiya");    
  34.         student3.setBirthDay(new Date());    
  35.     
  36.         List<Student> stuList = new ArrayList<Student>();  
  37.         stuList.add(student1);  
  38.         stuList.add(student3);  
  39.           
  40.         Class bj = new Class();  
  41.         bj.setCname("五年二班");  
  42.         bj.setMembers(stuList);  
  43.           
  44.         String json2 = mapper.writeValueAsString(bj);  
  45.         System.out.println("The JSON from Class is: " + json2);  
  46.           
  47.         Class bj2 = mapper.readValue(json2, Class.class);  
  48.         System.out.println(bj2);  
  49.           
  50.   
  51.     }  
  52.   
  53. }  

 运行结果:

Text代码  
  1. Change Object to JSON String: {
    "id":5237,"name":"jingshou","birthDay":1389513906622}  
  2. Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5237, name=jingshou]  
  3. The JSON from Class is: {
    "cname":"五年二班","members":[{
    "id":5237,"name":"jingshou","birthDay":1389513906622},{
    "id":5117,"name":"saiya","birthDay":1389513906859}]}  
  4. The Class Name is: 五年二班 The members are: [Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5237, name=jingshou], Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5117, name=saiya]]  
Change Object to JSON String: {"id":5237,"name":"jingshou","birthDay":1389513906622}Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5237, name=jingshou]The JSON from Class is: {"cname":"五年二班","members":[{"id":5237,"name":"jingshou","birthDay":1389513906622},{"id":5117,"name":"saiya","birthDay":1389513906859}]}The Class Name is: 五年二班 The members are: [Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5237, name=jingshou], Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5117, name=saiya]]

 

小结:

  • 转换的关键就是ObjectMapper 
  • 在使用ObjectMapper对象readValue或者writeValue的时候,JSON可以以字符串的形式传入,也可以以文件的形式传入,官方的例子是让将JSON保存在文件中
  • 明显JSON字串中的key与Java类中的field名字应该要相同
  • Student类如果有自定义构造函数的时候,进行JSON->对象转换会出错,接下去再研究这个问题..
  • Date域是以long类型输出的,有必要的话,需要进行格式转换

 本文出自""博客,请务必保留此出处

转载于:https://www.cnblogs.com/gscq073240/articles/7142101.html

你可能感兴趣的文章
在Ubuntu下安装*.sh
查看>>
NavigationBar 隐藏底部边线,阴影
查看>>
三种最典型的大数据存储技术路线
查看>>
stl非变易算法(二)
查看>>
java 关键字 transient
查看>>
Ubuntu配置和修改IP地址
查看>>
转载:如何设计一个可扩展的用户登录系统
查看>>
python对redis的常用操作 上 (对列表、字符串、散列结构操作)
查看>>
I.MX6 i2c_data_write_byte ioctl error: I/O error
查看>>
myisam MySQL 锁问题
查看>>
为什么获取的System.Web.HttpContext.Current值为null,HttpContext对象为null时如何获取程序(站点)的根目录...
查看>>
告诉你一个真实的OpenStack:都谁在用,用来干什么?
查看>>
在idea中maven项目jdk编译version总是跳到1.5
查看>>
理解与应用css中的display属性
查看>>
升级openssl环境至openssl-1.1.0c
查看>>
javaScript判断浏览器类型
查看>>
SQL注入之SQLmap入门
查看>>
Hibernate缓存研究
查看>>
Cesium原理篇:3D Tiles(1)渲染调度
查看>>
neuroph Perceptron Sample
查看>>