Java JSON转向实体多层对象引言
在Java开发中,JSON(JavaScript Object Notation)它是一种常用的数据交换格式。它具有简单、易读、易分析的特点,因此广泛应用于网络开发、移动应用开发等领域。在Java中,JSON字符串可以很容易地将JSON字符串转换为Java对象,从而实现JSON和实体对象之间的相互转换。
本文将介绍如何将JSON字符串转换为多层实体对象,并提供相应的代码示例。假设我们有一个学生,我们将通过一个简单的场景来解释这个过程(Student),它包括学生的基本信息和嵌套课程(Course),课程包括课程名称和成绩。
准备工作在开始之前,我们需要引入JSON库。Java中有很多JSON库可供选择,比如Jackson、Gson等。本文将使用Jackson库进行示例演示。
首先,我们需要在项目中工作pom.xml
将Jackson添加到Maven项目中的依赖性:
<dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.3</version> </dependency></dependencies>
然后,我们需要介绍Jackson的相关类别:
import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.core.JsonProcessingException;
将JSON字符串转换为实体对象首先,我们需要定义学生(Student)和课程类(Course):
public class Course { private String name; private int score; // 构造函数,Getter和Setter方法}public class Student { private String name; private int age; private List<Course> courses; // 构造函数,Getter和Setter方法}
下一步,我们可以将JSON字符串转换为学生对象(Student):
public class Main { public static void main(String[] args) { String json = "{\"name\":\"Tom\",\"age\":18,\"courses\":[{\"name\":\"Math\",\"score\":90},{\"name\":\"English\",\"score\":85}]}"; ObjectMapper objectMapper = new ObjectMapper(); try { Student student = objectMapper.readValue(json, Student.class); System.out.println(student.getName()); System.out.println(student.getAge()); System.out.println(student.getCourses()); } catch (JsonProcessingException e) { e.printStackTrace(); } }}
在上述代码中,我们首先定义了JSON字符串,以表示学生的信息和课程成绩。然后,我们使用它ObjectMapper
类的readValue()
该方法将JSON字符串转换为学生对象(Student)。最后,我们可以通过学生对象的Getter获取学生的信息和课程成绩,并打印出来。
运行上述代码,输出结果如下:
Tom18[Course{name='Math', score=90}, Course{name='English', score=85}]
可见,我们成功地将JSON字符串转换为学生对象,并能获得属性值。
实体对象转换为JSON字符串除了将JSON字符串转换为物理对象外,我们还可以将物理对象转换为JSON字符串。以下是一个例子:
public class Main { public static void main(String[] args) { Student student = new Student(); student.setName("Tom"); student.setAge(18); Course mathCourse = new Course(); mathCourse.setName("Math"); mathCourse.setScore(90); Course englishCourse = new Course(); englishCourse.setName("English"); englishCourse.setScore(85); List<Course> courses = new ArrayList<>(); courses.add(mathCourse); courses.add(englishCourse); student.setCourses(courses); ObjectMapper objectMapper = new ObjectMapper(); try { String json = objectMapper.writeValueAsString(student); System.out.println(json); } catch (JsonProcessingException e) { e.printStackTrace(); } }}
在上述代码中,我们创建了一个学生对象(Student),并且设置了学生的基本信息和课程成绩。然后,我们使用它ObjectMapper
类的writeValueAsString()
该方法将学生对象转换为JSON字符串。最后,我们打印了转换后的JSON字符串。
运行上述代码,输出结果如下:
{ "name" : "Tom", "age" : 18, "courses" : [ { "name" : "Math",