在 Java 开发中,JSON 数据格式被广泛应用于前后端数据交互、接口通信以及配置文件的存储与解析。其中,JSONArray 是处理 JSON 数组的一种常用结构,尤其在使用如 org.json 或 com.alibaba.fastjson 等 JSON 库时非常常见。
然而,在实际开发过程中,我们往往需要将 JSONArray 转换为 Java 中的 List 结构,以便于后续的数据处理和业务逻辑操作。本文将详细介绍 Java 中将 JSONArray 转换为 List 的几种常用方法,涵盖不同 JSON 库的实现方式,并结合示例说明其使用场景与注意事项。
org.json 是一个轻量级的 JSON 处理库,适用于简单的 JSON 操作。它提供了 JSONArray 类,可以方便地将 JSON 数组转换为 Java 的 List。
方法一:直接遍历 JSONArray
可以通过遍历 JSONArray 的每个元素,将其逐个添加到 List 中:
import org.json.JSONArray;
import java.util.ArrayList;
import java.util.List;
public class JsonArrayToList {
public static void main(String[] args) {
String jsonArrayStr = "[\"apple\", \"banana\", \"orange\"]";
JSONArray jsonArray = new JSONArray(jsonArrayStr);
List<String> list = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
list.add(jsonArray.getString(i));
}
System.out.println(list); // 输出: [apple, banana, orange]
}
}
这种方法适用于简单的字符串或数字类型的数组,若需处理复杂对象,可进一步提取 JSONObject 并转换为自定义对象。
FastJSON 是一个高性能的 JSON 解析库,支持更复杂的 JSON 数据结构处理。通过 JSONArray 可以直接转换为 List,并且支持泛型类型。
方法二:使用 toList() 方法
FastJSON 提供了 toList() 方法,可以直接将 JSONArray 转换为 List:
import com.alibaba.fastjson.JSONArray;
import java.util.List;
public class FastJsonExample {
public static void main(String[] args) {
String jsonArrayStr = "[\"apple\", \"banana\", \"orange\"]";
JSONArray jsonArray = JSONArray.parseArray(jsonArrayStr);
List<String> list = jsonArray.toList(String.class);
System.out.println(list); // 输出: [apple, banana, orange]
}
}
此方法简洁高效,特别适合处理结构清晰的 JSON 数组。如果数组中包含的是对象,则可以使用 toJavaList() 方法并指定目标类:
List<User> userList = jsonArray.toJavaList(User.class);
Gson 是 Google 提供的一个强大的 JSON 库,支持将 JSON 转换为 Java 对象,同时也支持将 JSONArray 转换为 List。
方法三:通过 fromJson() 方法转换
Gson 不直接提供 JSONArray 类,但可以通过 JsonParser 解析 JSON 字符串后,再将其转换为 List:
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;
import java.util.List;
public class GsonExample {
public static void main(String[] args) {
String jsonArrayStr = "[\"apple\", \"banana\", \"orange\"]";
JsonArray jsonArray = JsonParser.parseString(jsonArrayStr).getAsJsonArray();
Gson gson = new Gson();
List<String> list = gson.fromJson(jsonArray, List.class);
System.out.println(list); // 输出: [apple, banana, orange]
}
}
对于复杂对象的数组,也可以使用类似方式,例如:
List<User> userList = gson.fromJson(jsonArray, new TypeToken<List<User>>(){}.getType());
Jackson 是另一个广泛使用的 JSON 处理库,功能强大且性能优异。它可以将 JSON 数组转换为 List,并支持多种类型转换。
方法四:使用 readValue() 方法
Jackson 提供了 readValue() 方法,可以直接将 JSON 字符串转换为 List:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class JacksonExample {
public static void main(String[] args) throws Exception {
String jsonArrayStr = "[\"apple\", \"banana\", \"orange\"]";
ObjectMapper mapper = new ObjectMapper();
List<String> list = mapper.readValue(jsonArrayStr, List.class);
System.out.println(list); // 输出: [apple, banana, orange]
}
}
如果 JSON 数组中包含的是对象,也可以通过泛型指定目标类型:
List<User> userList = mapper.readValue(jsonArrayStr, new TypeReference<List<User>>() {});
除了上述提到的库之外,还有一些其他的 JSON 处理工具也支持 JSONArray 到 List 的转换,比如:
Jackson:如上所述,支持灵活的类型转换。
JsonNode:Jackson 提供的 JsonNode 接口,可用于更细粒度的 JSON 操作。
Jettison:用于将 JSON 转换为 Java 对象,适用于 RESTful API 开发。
在 Java 中将 JSONArray 转换为 List 是一种常见的数据处理需求,不同的 JSON 库提供了多种实现方式。从简单字符串数组到复杂对象列表,开发者可以根据项目具体情况选择最合适的转换方法。
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
查询台风信息和台风路径
查询国家预警信息发布中心发布的气象预警信息,如:台风、暴雨、暴雪、寒潮、大风、沙尘暴、高温、干旱、雷电等预警类型及预警等级、时间等信息。
支持全球200多个国家或地区,以及国内三网运营商基站位置信息数据查询。
强大的数据积累,依托海量的数据,返回内容丰富度高,包含url、网页标题、正文摘要等,在需要时能够实时访问互联网信息,从而突破信息壁垒,实现更精准、更全面的输出。
通过出发地、目的地、出发日期等信息查询航班信息。