如何使用集合Stream将JSON字符串列表转换为Users对象列表?
将JSON字符串列表转换为Users对象列表的几种方案
首先需要修正你的Users类定义(存在语法错误,且序列化工具需要必要的构造函数和访问方法):
public class Users { private int id; private String name; // 无参构造函数(序列化工具必须) public Users() {} // 全参构造函数(可选) public Users(int id, String name) { this.id = id; this.name = name; } // Getter和Setter方法 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
注意:
你提供的示例JSON格式存在错误,正确的用户JSON数组应该是:
[{"id":"24","name":"name"},{"id":"24","name":"name"}]
每个元素是独立的JSON对象,而非带user1:这样的键。
方案1:使用Jackson(Spring生态常用)
Jackson是Java生态中最常用的JSON处理库,Spring默认集成它。
转换代码:
import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; import java.util.stream.Collectors; // 建议将ObjectMapper声明为全局单例,避免重复创建开销 ObjectMapper objectMapper = new ObjectMapper(); List<Users> userList = users.stream() .map(jsonStr -> { try { // 将单个JSON字符串转为Users对象 return objectMapper.readValue(jsonStr, Users.class); } catch (Exception e) { // 处理解析异常,比如打印日志或过滤无效数据 e.printStackTrace(); return null; } }) .filter(user -> user != null) // 剔除解析失败的元素 .collect(Collectors.toList());
方案2:使用Gson(Google出品)
Gson是Google开发的轻量JSON库,使用简单直观。
转换代码:
import com.google.gson.Gson; import java.util.List; import java.util.stream.Collectors; // Gson实例可全局复用 Gson gson = new Gson(); List<Users> userList = users.stream() .map(jsonStr -> gson.fromJson(jsonStr, Users.class)) .collect(Collectors.toList());
方案3:使用Fastjson(阿里出品)
Fastjson是阿里开发的高性能JSON库,解析速度较快。
转换代码:
import com.alibaba.fastjson.JSON; import java.util.List; import java.util.stream.Collectors; List<Users> userList = users.stream() .map(jsonStr -> JSON.parseObject(jsonStr, Users.class)) .collect(Collectors.toList());
内容的提问来源于stack exchange,提问作者clement mensah
相关产品推荐
相关产品推荐

