如何将JSON转换为List实用指南与代码示例
在Java开发中,处理JSON数据并将其转换为特定类型的集合(如List
使用Gson库转换
Google的Gson库是处理JSON数据的流行选择之一,以下是使用Gson将JSON字符串转换为List
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;
public class JsonToListString {
public static void main(String[] args) {
// 示例JSON字符串
String jsonString = "[\"apple\", \"banana\", \"orange\", \"grape\"]";
// 创建Gson实例
Gson gson = new Gson();
// 定义List<String>的类型
Type listType = new TypeToken<List<String>>() {}.getType();
// 转换JSON字符串为List<String>
List<String> fruitList = gson.fromJson(jsonString, listType);
// 输出结果
System.out.println(fruitList); // 输出: [apple, banana, orange, grape]
}
}
关键点:
- 使用
TypeToken来指定目标类型为List<String> gson.fromJson()方法接受JSON字符串和目标类型作为参数
使用Jackson库转换
Jackson是另一个广泛使用的JSON处理库,转换方式如下:
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class JsonToListStringJackson {
public static void main(String[] args) throws Exception {
// 示例JSON字符串
String jsonString = "[\"apple\", \"banana\", \"orange\", \"grape\"]";
// 创建ObjectMapper实例
ObjectMapper objectMapper = new ObjectMapper();
// 转换JSON字符串为List<String>
List<String> fruitList = objectMapper.readValue(jsonString, new TypeReference<List<String>>() {});
// 输出结果
System.out.println(fruitList); // 输出: [apple, banana, orange, grape]
}
}
关键点:
- 使用
TypeReference来指定泛型类型 objectMapper.readValue()方法执行转换
使用org.json库转换
轻量级的org.json库也提供了简单的转换方法:
import org.json.JSONArray;
import java.util.ArrayList;
import java.util.List;
public class JsonToListStringOrgJson {
public static void main(String[] args) {
// 示例JSON字符串
String jsonString = "[\"apple\", \"banana\", \"orange\", \"grape\"]";
// 将JSON字符串转换为JSONArray
JSONArray jsonArray = new JSONArray(jsonString);
// 创建List<String>并填充数据
List<String> fruitList = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
fruitList.add(jsonArray.getString(i));
}
// 输出结果
System.out.println(fruitList); // 输出: [apple, banana, orange, grape]
}
}
关键点:
- 先将JSON字符串转换为
JSONArray对象 - 然后遍历
JSONArray,逐个添加到List<String>中
处理复杂JSON场景
当JSON结构更复杂时(如嵌套对象或数组),需要先提取字符串数组部分:
// 使用Gson处理复杂JSON
String complexJson = "{\"fruits\":[\"apple\", \"banana\", \"orange\"], \"vegetables\":[\"carrot\", \"broccoli\"]}";
Gson gson = new Gson();
Type listType = new TypeToken<List<String>>() {}.getType();
List<String> fruits = gson.fromJson(gson.fromJson(complexJson, JsonObject.class).get("fruits"), listType);
注意事项
- JSON格式验证:确保输入的JSON字符串格式正确,否则会抛出异常
- 空值处理:考虑JSON中可能包含null值的情况
- 性能考虑:对于大量数据,选择性能合适的库(Jackson通常性能较好)
- 异常处理:添加适当的try-catch块处理可能的异常
将JSON转换为List



还没有评论,来说两句吧...