行业资讯 2025年08月6日
0 收藏 0 点赞 712 浏览 3668 个字
摘要 :

文章目录 准备 1.使用FastJson 1.1 Maven 1.2. 将JSON数组转换为List 2.使用Jackson 2.1. Maven 2.2. 将JSON数组转换为List 3.使用Gson 3.1. Maven 3.2. 将JSON数……




  • 准备
  • 1.使用FastJson
    • 1.1 Maven
    • 1.2. 将JSON数组转换为List
  • 2.使用Jackson
    • 2.1. Maven
    • 2.2. 将JSON数组转换为List
  • 3.使用Gson
    • 3.1. Maven
    • 3.2. 将JSON数组转换为List
  • 4.使用Org.json
    • 4.1. Maven
    • 4.2. 将JSON数组转换为List
  • 5.结论

在Java中处理JSON数据时,通常需要将JSON数组转换为Java List/ArrayList,以更高效地处理数据。本Java文章探讨了如何使用4个流行的Java库来实现这一目标:

  • FastJson
  • Gson
  • Jackson
  • Org.json

准备

本文从项目的/resources目录中读取data.json文件,其中包含JSON数组。文件内容如下:

[
  {\"id\":1,\"name\":\"Alex\",\"age\":41},
  {\"id\":2,\"name\":\"Brian\",\"age\":42},
  {\"id\":3,\"name\":\"Charles\",\"age\":43}
]

我们使用以下代码将文件内容读取为Java字符串:

URL fileUrl = JsonArrayToList.class.getClassLoader().getResource(\"data.json\");
Path filePath = Paths.get(fileUrl.toURI());
String jsonArray = Files.readString(filePath);

我们将读取JSON内容转换为Person对象的List。

@Data
@NoArgsConstructor
@AllArgsConstructor
class Person {
  long id;
  String name;
  int age;
}

1.使用FastJson

FastJson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean

1.1 Maven

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
</dependency>

1.2. 将JSON数组转换为List

List<Person> readPersonListFromJsonArray(String jsonArray) {
     List<Person> personList = JSON.parseArray(jsonArray, Person.class);
     return personList;
}

2.使用Jackson

Jackson是一个用于处理JSON和XML数据的流行Java库。它在Spring框架中自动包含,因此这里使用的技术也可以在Spring应用程序中使用。

要使用Jackson将JSON数组转换为Java列表,请按照以下步骤操作:

2.1. Maven

如果项目运行时没有最新版本的Jackson库,请添加它。

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

2.2. 将JSON数组转换为List

当使用Jackson解析JSON数据为Java对象或列表时,我们应该在处理泛型类型(如List<T>或Map<K, V>)时知道目标类型。TypeReference类提供了在运行时将类型信息传递给Jackson以将JSON数据反序列化为泛型类型所需的信息。

List<Person> readPersonListFromJsonArray(String jsonArray) throws JsonProcessingException {
  //如果在Spring / Spring Boot项目中可以使用@Autowired注入
  ObjectMapper objectMapper = new ObjectMapper();
  TypeReference<List<Person>> jacksonTypeReference = new TypeReference<>() {};
  List<Person> personList = objectMapper.readValue(jsonArray, jacksonTypeReference);
  return personList;
}

3.使用Gson

Gson由Google开发,也是一个广泛使用的用于处理JSON数据的Java库。Gson提供了一个简单而方便的API,用于将Java对象序列化为JSON并将JSON反序列化为Java对象。

要使用Gson将JSON数组转换为Java列表,请按照以下步骤操作:

3.1. Maven

如果项目运行时没有最新版本的Gson库,请添加它。

<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.10.1</version>
</dependency>

3.2. 将JSON数组转换为List

就像Jackson使用TypeReference一样,Gson使用TypeToken来帮助将JSON数据反序列化为复杂的泛型类型。

在Java中,由于类型擦除,集合的泛型类型信息(如List<T>)在运行时不可用。因此,当处理泛型类型时,Gson不知道我们要反序列化到的确切类型。TypeToken类保留了这些信息,并充当了类型擦除限制的解决方法。

List<Person> readPersonListFromJsonArray(String jsonArray) {
  //如果在Spring / Spring Boot项目中可以使用@Autowired注入
  Gson gson = new Gson();
  Type listType = new TypeToken<List<Person>>() {}.getType();
  List<Person> personList = gson.fromJson(jsonArray, listType);
  return personList;
}

4.使用Org.json

Org.json或JSON-Java是一个简单轻量的基于Java的库,我们可以使用它来进行JSON和XML、HTTP头、Cookies和CDL之间的编码和解码。它完全符合JSON规范(RFC-4627)。

要使用Org.json将JSON数组转换为Java列表,请按照以下步骤操作:

4.1. Maven

如果项目运行时没有最新版本的org.json库,请添加它。

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20230618</version>
</dependency>

4.2. 将JSON数组转换为List

以下代码解析包含个人数据的JSON数组,并使用JSONArray和JSONObject类将其转换为Java Person对象的列表。

  • JSONArray表示JSON中的人员对象数组。
  • JSONObject表示JSON中的个人对象。
List<Person> readPersonListFromJsonArray(String json) {
  JSONArray jsonArray = new JSONArray(json);
  List<Person> personList = new ArrayList<>();
  for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject jsonPerson = jsonArray.getJSONObject(i);
    long id = jsonPerson.getLong(\"id\");
    String name = jsonPerson.getString(\"name\");
    int age = jsonPerson.getInt(\"age\");
    Person person = new Person(id, name, age);
    personList.add(person);
  }
  return personList;
}

5.结论

在本文中,我们探讨了如何使用FastJson、Gson、Jackson和Org.json库将JSON数组转换为Java列表。每个库都有其优势,适用于不同的场景。Gson提供了一个简单易用的API,Jackson提供了高性能和灵活性,而Org.json则是一个更轻量级的选择。

我们应该选择最适合项目需求并充分利用其功能的库。例如,在Spring应用程序中,默认包含Jackson,因此在这种情况下使用它是合理的。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9286.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号