专栏首页别先生Java中使用Jackson,对JSON和对象进行转换

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 }

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java枚举类使用和总结

    别先生
  • JDBC操作数据库,第一:jsp插入mysql数据库,坎坷摸索分享

    JSP连接数据库,坎坷摸索了好久,现在终于做好了,分享一下,希望对更多热爱编程学习的人有所帮助!!!谢谢  第一:首先准备的就是已经安装好Mysql,这里不做...

    别先生
  • Struts2(接受表单参数)请求数据自动封装和数据类型转换

    Struts2请求数据自动封装:   (1)实现原理:参数拦截器   (2)方式1:jsp表单数据填充到action中的属性;        普通的成员变量,...

    别先生
  • 聊聊spring.cloud.gateway.default-filters

    本文主要研究下spring.cloud.gateway.default-filters

    codecraft
  • Java基础-17(01)总结,登录注册案例,Set集合,HashSet

    1:登录注册案例(理解) 需求:用户登录注册案例。 按照如下的操作,可以让我们更符号面向对象思想 A:有哪些类呢? B:每个类有哪些东西呢? C:类与类之...

    Java帮帮
  • 14-Flink-Table-&-SQL实战

    Apache Flink具有两个关系API - 表API和SQL - 用于统一流和批处理。Table API是Scala和Java的语言集成查询API,允许以非...

    王知无
  • 如何快速一键搞定JPA中所有findBy语法规则

    2.新建一个SpringBoot项目(如果新手还不会,请先阅读idea中如何快速创建SpringBoot项目)

    林老师带你学编程
  • spring cloud zuul网关的作用

    zuul一般有两大作用,1是类似于Nginx的网址重定向,但zuul的重定向的一般是整个spring cloud里在Eureka注册中心的模块.

    算法之名
  • 使用Retrofit + RxJava 网络请求

     Retrofit: Retrofit是Square 公司开发的一款正对Android 网络请求的框架。底层基于OkHttp 实现,OkHttp 已经得到...

    黄林晴
  • 使用机器人操作系统ROS 2和仿真软件Gazebo 9激光传感器算法进阶(六)

    zhangrelay

扫码关注云+社区

领取腾讯云代金券