Java中使用JSON塞入List

在Java开发中,JSON是一种常用的数据格式,用于在不同的系统之间传递和存储数据。JSON以简洁的方式表示数据,易于阅读和理解。对于含有多个数据项的情况,我们可以使用List来存储数据并将其转换为JSON格式。

什么是JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript语法的子集。它以键值对的形式存储数据,并使用大括号{}和中括号[]来表示对象和数组。JSON格式示例如下:

{
  "name": "John",
  "age": 30,
  "city": "New York"
}

使用JSON库

在Java中,我们可以使用许多开源的JSON库来处理JSON数据。其中,最常用的库之一是Jackson。Jackson提供了一组简单而强大的API,用于将Java对象转换为JSON格式,并将JSON格式转换回Java对象。

首先,我们需要在项目中引入Jackson库的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖项:

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

在Gradle项目中,可以在build.gradle文件中添加以下依赖项:

dependencies {
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.2'
}

将List转换为JSON

假设我们有一个存储学生信息的List,每个学生对象包含姓名、年龄和成绩。我们想将这个List转换为JSON格式。下面是一个示例代码:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.util.ArrayList;
import java.util.List;

public class JsonExample {
    public static void main(String[] args) throws Exception {
        List<Student> students = new ArrayList<>();
        students.add(new Student("John", 18, 90));
        students.add(new Student("Alice", 20, 85));

        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.enable(SerializationFeature.INDENT_OUTPUT);

        String json = objectMapper.writeValueAsString(students);
        System.out.println(json);
    }

    static class Student {
        private String name;
        private int age;
        private int score;

        public Student(String name, int age, int score) {
            this.name = name;
            this.age = age;
            this.score = score;
        }

        // Getters and setters
    }
}

以上代码中,我们首先创建了一个存储学生信息的List,并添加了两个学生对象。然后,我们创建了一个ObjectMapper对象,它是Jackson库中用于对象和JSON之间转换的核心类。我们通过writeValueAsString方法将List转换为JSON字符串,并使用println方法打印输出。

运行以上代码,将会得到以下输出:

[
  {
    "name" : "John",
    "age" : 18,
    "score" : 90
  },
  {
    "name" : "Alice",
    "age" : 20,
    "score" : 85
  }
]

将JSON转换为List

除了将List转换为JSON,我们还可以将JSON转换回List。Jackson库提供了readValue方法,可以将JSON字符串转换为Java对象。以下是一个将JSON转换为List的示例代码:

import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;

public class JsonExample {
    public static void main(String[] args) throws Exception {
        String json = "[{\"name\":\"John\",\"age\":18,\"score\":90},{\"name\":\"Alice\",\"age\":20,\"score\":85}]";

        ObjectMapper objectMapper = new ObjectMapper();

        List<Student> students = objectMapper.readValue(json, objectMapper.getTypeFactory().constructCollectionType(List.class, Student.class));
        for (Student student : students) {
            System.out.println(student.getName() + ", " + student.getAge() + ", " + student.getScore());
        }
    }

    static class Student {
        private String name;
        private int age;
        private int score;

        // Getters and setters
    }
}

以上代码中,我们首先定义了一个JSON字符串,它与之前的示例输出相同。然后,我们使用readValue方法将JSON字符串转换为List对象。需要注意的