前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中使用Jackson,对JSON和对象进行转换

Java中使用Jackson,对JSON和对象进行转换

作者头像
别先生
发布2020-03-19 17:38:47
2.5K0
发布2020-03-19 17:38:47
举报
文章被收录于专栏:别先生别先生

1、添加依赖,在Maven的pom.xml文件中添加以下依赖。

代码语言:javascript
复制
1 <dependency>
2   <groupId>com.fasterxml.jackson.core</groupId>
3   <artifactId>jackson-databind</artifactId>
4   <version>2.10.2</version>
5 </dependency>

如果是单独加这个依赖包,使用上面的即可。如果是使用Springboot开发项目,那么这个依赖包是直接封装好的,不用单独加了,自己可以使用工具进行查看,看看是否有这个依赖包就行了,如下所示:

2、Java中使用Jackson,对JSON和对象进行转换。工具类如下所示:

代码语言:javascript
复制
  1 package com.bie.utils;
  2 
  3 import com.fasterxml.jackson.core.JsonProcessingException;
  4 import com.fasterxml.jackson.databind.JavaType;
  5 import com.fasterxml.jackson.databind.ObjectMapper;
  6 import com.bie.nationalpolicy.po.Student;
  7 
  8 import java.util.ArrayList;
  9 import java.util.List;
 10 
 11 /**
 12  * @ProjectName: nationalpolicy
 13  * @Package: com.bie.utils
 14  * @ClassName: JsonUtils
 15  * @Author: biehl
 16  * @Description: ${description}
 17  * @Date: 2020/2/28 10:30
 18  * @Version: 1.0
 19  */
 20 public class JsonUtils {
 21 
 22 
 23     // 定义jackson对象
 24     private static final ObjectMapper MAPPER = new ObjectMapper();
 25 
 26     /**
 27      * 将对象转换成json字符串。
 28      * <p>Title: pojoToJson</p>
 29      * <p>Description: </p>
 30      *
 31      * @param data
 32      * @return
 33      */
 34     public static String objectToJson(Object data) {
 35         try {
 36             String string = MAPPER.writeValueAsString(data);
 37             return string;
 38         } catch (JsonProcessingException e) {
 39             e.printStackTrace();
 40         }
 41         return null;
 42     }
 43 
 44     /**
 45      * 将json结果集转化为对象
 46      *
 47      * @param jsonData json数据
 48      * @param beanType 对象中的object类型
 49      * @return
 50      */
 51     public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
 52         try {
 53             T t = MAPPER.readValue(jsonData, beanType);
 54             return t;
 55         } catch (Exception e) {
 56             e.printStackTrace();
 57         }
 58         return null;
 59     }
 60 
 61     /**
 62      * 将json数据转换成pojo对象list
 63      * <p>Title: jsonToList</p>
 64      * <p>Description: </p>
 65      *
 66      * @param jsonData
 67      * @param beanType
 68      * @return
 69      */
 70     public static <T> List<T> jsonToList(String jsonData, Class<T> beanType) {
 71         JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
 72         try {
 73             List<T> list = MAPPER.readValue(jsonData, javaType);
 74             return list;
 75         } catch (Exception e) {
 76             e.printStackTrace();
 77         }
 78         return null;
 79     }
 80 
 81 
 82     public static void main(String[] args) {
 83         // Java内部类创建对象,要想直接创建内部类的对象,必须使用外部类的对象来创建内部类对象
 84         List<Student> students = new ArrayList<Student>();
 85         for (int i = 0; i < 20; i++) {
 86             Student student = new Student();
 87             student.setId(1008611 + i);
 88             student.setName("张三三" + i);
 89             student.setAddress("北京市西城区什刹海街道西什库大街31号院" + i);
 90 
 91             // 1、将实体类对象转换为json格式
 92             String objectToJson = JsonUtils.objectToJson(student);
 93             System.out.println("1、将实体类对象转换为json格式: " + objectToJson);
 94 
 95             students.add(student);
 96         }
 97 
 98         // 2、将Json格式的数据转换为实体类
 99         String jsonToPojo = JsonUtils.objectToJson(students);
100         System.out.println("2、将Json格式的数据转换为实体类: " + jsonToPojo);
101 
102         // 3、将json数据转换成pojo对象list
103         List<Student> jsonToList = JsonUtils.jsonToList(jsonToPojo, Student.class);
104         System.out.println("3、将json数据转换成pojo对象list: " + jsonToList.toString());
105     }
106 }

创建一个实体类,如下所示:

代码语言:javascript
复制
 1 package com.feixian.nationalpolicy.po;
 2 
 3 /**
 4  *
 5  */
 6 public class Student {
 7 
 8     private int id;
 9     private String name;
10     private String address;
11 
12     public int getId() {
13         return id;
14     }
15 
16     public void setId(int id) {
17         this.id = id;
18     }
19 
20     public String getName() {
21         return name;
22     }
23 
24     public void setName(String name) {
25         this.name = name;
26     }
27 
28     public String getAddress() {
29         return address;
30     }
31 
32     public void setAddress(String address) {
33         this.address = address;
34     }
35 
36     public Student(int id, String name, String address) {
37         this.id = id;
38         this.name = name;
39         this.address = address;
40     }
41 
42     public Student() {
43     }
44 
45     @Override
46     public String toString() {
47         return "Student{" +
48                 "id=" + id +
49                 ", name='" + name + '\'' +
50                 ", address='" + address + '\'' +
51                 '}';
52     }
53 }

测试运行效果,如下所示:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档