微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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类,

  1. public class Student {
  2. private String name;
  3. private int age;
  4. private String[] hobbies;
  5. public String getName() {
  6. return name;
  7. }
  8. public void setName(String name) {
  9. this.name = name;
  10. }
  11. public int getAge() {
  12. return age;
  13. }
  14. public void setAge(int age) {
  15. this.age = age;
  16. }
  17. public String[] getHobbies() {
  18. return hobbies;
  19. }
  20. public void setHobbies(String[] hobbies) {
  21. this.hobbies = hobbies;
  22. }

  1. @Override
  2. public String toString() {
  3. return "Student{" +
  4. "name='" + name + '\'' +
  5. ", age=" + age +
  6. ", hobbies=" + Arrays.toString(hobbies) +
  7. '}';
  8. }
  9. }


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

  1. package json;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. public class JsonTest {
  7. private static final Logger logger = LoggerFactory.getLogger(JsonTest.class);
  8. public static void main(String[] args) {
  9. // 第一步,创建一个ObjectMapper类,这个类是Jackson中的主要类,可以重复使用,
  10. // 用来进行json序列化和反序列化
  11. ObjectMapper mapper = new ObjectMapper();
  12. Student student = new Student();
  13. String[] hobbies = {"music", "football", "basketball"};l
  14. student.setName("Jack");
  15. student.setAge(25);
  16. student.setHobbies(hobbies);
  17. try {
  18. // 第二步,通过ObjectMapper的writeValueAsstring()方法来将Student对象转换成json字符串
  19. String jsonString = mapper.writeValueAsstring(student);
  20. System.out.println(jsonString);
  21. } catch (JsonProcessingException e) {
  22. logger.error(String.format("Error reason: %s", e));
  23. }
  24. }
  25. }

测试结果为  
{"name":"Jack","age":25,"hobbies":["music","football","basketball"]} 

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

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

测试结果为  

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);


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐