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

2020-03-19 17:38:47 浏览数 (2)

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 }

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

0 人点赞