Java中使用Jackson,对JSON和对象进行转换
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 }
测试运行效果,如下所示:
作者:别先生
博客园:https://www.cnblogs.com/biehongli/
如果您想及时得到个人撰写文章以及著作的消息推送,可以扫描上方二维码,关注个人公众号哦。