java对象和json的相互转换--(2) 使用Jackson 进行简单的java对象json序列化和反序列化

2022/3/21 14:27:49

本文主要是介绍java对象和json的相互转换--(2) 使用Jackson 进行简单的java对象json序列化和反序列化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

java对象和json的相互转换--(2) 使用Jackson 进行简单的java对象json序列化和反序列化
https://blog.csdn.net/wslyk606/article/details/80301782

背景:json格式是现在java开发中使用很多的一种字符串格式,现在开发中一般都是前后端隔离的,通常后端需要以约定的格式传送之给前端数据,而json就是常用的一种。现在对常用的几种java对象和json的相互转化做一个总结,方便以后的工作学习。

前写的一篇其实也是使用jackson来进行的java对象的序列化,只是采用了注解的方式,这篇文章开始,会对几种常用的方式做一个详细的记录。

一  使用Jackson进行简单的java对象和json字符串的相互转化

Jackson的maven依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.5</version>
</dependency>

首先我们定义一个Student类,

public class Student {    private String name;    private int age;    private String[] hobbies;     public String getName() {        return name;    }     public void setName(String name) {        this.name = name;    }     public int getAge() {        return age;    }     public void setAge(int age) {        this.age = age;    }     public String[] getHobbies() {        return hobbies;    }     public void setHobbies(String[] hobbies) {        this.hobbies = hobbies;    }
    @Override    public String toString() {        return "Student{" +                "name='" + name + '\'' +                ", age=" + age +                ", hobbies=" + Arrays.toString(hobbies) +                '}';    }}


下面写一个简单的Student类转换为json字符串的demo

package json; import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import org.slf4j.Logger;import org.slf4j.LoggerFactory; public class JsonTest {    private static final Logger logger = LoggerFactory.getLogger(JsonTest.class);     public static void main(String[] args) {//        第一步,创建一个ObjectMapper类,这个类是Jackson中的主要类,可以重复使用,//        用来进行json序列化和反序列化        ObjectMapper mapper = new ObjectMapper();         Student student = new Student();        String[] hobbies = {"music", "football", "basketball"};l        student.setName("Jack");        student.setAge(25);        student.setHobbies(hobbies);         try {//            第二步,通过ObjectMapper的writeValueAsString()方法来将Student对象转换成json字符串            String jsonString = mapper.writeValueAsString(student);            System.out.println(jsonString);        } catch (JsonProcessingException e) {            logger.error(String.format("Error reason: %s", e));        }    }}
测试结果为  
{"name":"Jack","age":25,"hobbies":["music","football","basketball"]} 

反之,json字符串转换成对应的java对象也是一样,

package json; import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java.io.IOException;import java.util.Arrays; public class JsonTest {    private static final Logger logger = LoggerFactory.getLogger(JsonTest.class);     public static void main(String[] args) {//        第一步,创建一个ObjectMapper类,这个类是Jackson中的主要类,可以重复使用,//        用来进行json序列化和反序列化        ObjectMapper mapper = new ObjectMapper();         String jsonString = "{\"name\":\"Jack\",\"age\":25,\"hobbies\":[\"music\",\"football\",\"basketball\"]}";        try {//            第二步,通过ObjectMapper的readValue()方法来将json字符串转换成Student对象            Student student = mapper.readValue(jsonString, Student.class);            System.out.println("name : " + student.getName());            System.out.println("age : " + student.getAge());            System.out.println("hobbies : " + Arrays.toString(student.getHobbies()));        } catch (IOException e) {            logger.error(String.format("Error reason: %s", e));        }    }}

测试结果为  

name : Jack
age : 25

hobbies : [music, football, basketball]

小结:  主要采用Jackson的ObjectMapper类来进行java对象和json字符串的转换,

java对象序列化使用的是writeValueAsString方法:

将Student类格式化为json字符串
 jsonString = mapper.writeValueAsString(student);


反序列化使用的是readValue方法:

读取java对象格式的json并转换成Student类
Student student = mapper.readValue(jsonString, Student.class);




这篇关于java对象和json的相互转换--(2) 使用Jackson 进行简单的java对象json序列化和反序列化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程