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

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和对象进行转换。工具类如下所示:

  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 }

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

 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 }

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

作者:别先生

博客园:IT虾米网

如果您想及时得到个人撰写文章以及著作的消息推送,可以扫描上方二维码,关注个人公众号哦。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!