当前位置: 首页 > 图灵资讯 > 技术篇> java json转实体多层对象

java json转实体多层对象

来源:图灵教育
时间:2024-01-07 09:32:06

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