Java List<JSONObject>如何转换为List<实体类>

 更新时间:2025年05月19日 10:36:21   作者:CnLg.NJ  
这篇文章主要介绍了Java List<JSONObject>如何转换为List<实体类>的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

List<JSONObject>转换为List<实体类>

可以使用 Fastjson 的 toJavaObject 方法直接转换,无需中间序列化步骤。

以下是具体实现和注意事项:

import com.alibaba.fastjson.JSONObject;
import java.util.List;
import java.util.stream.Collectors;

public class Converter {
    public static List<Params6000Bean> convert(List<JSONObject> jsonObjectList) {
        return jsonObjectList.stream()
                .map(json -> json.toJavaObject(Params6000Bean.class))
                .collect(Collectors.toList());
    }
}

或通过传统循环实现:

import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.List;

public class Converter {
    public static List<Params6000Bean> convert(List<JSONObject> jsonObjectList) {
        List<Params6000Bean> result = new ArrayList<>();
        for (JSONObject json : jsonObjectList) {
            Params6000Bean bean = json.toJavaObject(Params6000Bean.class);
            result.add(bean);
        }
        return result;
    }
}

关键步骤说明

1)遍历 List<JSONObject>

使用 Stream API 或循环逐个处理每个 JSONObject

2)调用 toJavaObject() 方法

Fastjson 的 JSONObject.toJavaObject(Class<T> clazz) 直接将 JSON 数据结构映射到目标 Bean 类。

3)收集结果

将转换后的 Params6000Bean 对象收集到新的 List 中。

注意事项

字段匹配

  • Params6000Bean 的字段名需与 JSON 中的键名一致。
  • 若字段名不一致,可使用 @JSONField(name = "json_key") 注解:
public class Params6000Bean {
    @JSONField(name = "user_name")
    private String userName;
    // 其他字段和 getter/setter
}

类型兼容性

  • JSON 中的值类型需与 Bean 字段类型兼容(如 StringInteger 会失败)。
  • 若类型不一致,需自定义反序列化逻辑或使用 Fastjson 的 @JSONField(deserializeUsing = CustomDeserializer.class)

空值处理

  • 若 JSON 中某字段为 null,Bean 的对应字段需允许 null(如使用包装类型 Integer 而非 int)。

性能优化

  • 直接使用 toJavaObject() 避免序列化为字符串,效率更高。
  • 对于大数据量,推荐使用 Stream API 或并行流(需确保线程安全)。

示例 Bean 类

public class Params6000Bean {
    private String name;
    private int age;
    private boolean isStudent;
    // 必须有 getter/setter 或 public 字段
}

异常处理

如果 JSON 数据可能存在缺失字段或类型错误,建议捕获异常:

try {
    List<Params6000Bean> beans = convert(jsonObjectList);
} catch (Exception e) {
    // 处理转换异常(如字段缺失、类型不匹配)
    e.printStackTrace();
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java仅用30行代码就实现了视频转音频的批量转换

    java仅用30行代码就实现了视频转音频的批量转换

    这篇文章主要介绍了java仅用30行代码就实现了视频转音频的批量转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • JUnit 5中扩展模型的深入理解

    JUnit 5中扩展模型的深入理解

    几乎所有的Java 开发人员都会使用JUnit 来做测试,但其实很多自动化测试人员也会使用Junit 。下面这篇文章主要给大家介绍了关于JUnit 5中扩展模型的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-08-08
  • Spring P标签的使用详解

    Spring P标签的使用详解

    这篇文章主要介绍了Spring P标签的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 在启动后台 jar包时,使用指定的 application.yml操作

    在启动后台 jar包时,使用指定的 application.yml操作

    这篇文章主要介绍了在启动后台 jar包时,使用指定的 application.yml操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 实战讲解Maven安装及基本使用详解

    实战讲解Maven安装及基本使用详解

    这篇文章主要介绍了实战讲解Maven安装及基本使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Java基础知识汇总

    Java基础知识汇总

    这篇文章对Java编程语言的基础知识作了一个较为全面的汇总,在这里给大家分享一下。需要的朋友可以参考。
    2017-09-09
  • SpringBoot读取外部配置文件的方法

    SpringBoot读取外部配置文件的方法

    这篇文章主要介绍了SpringBoot读取外部配置文件的方法,以端口配置为例,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Java对数器的使用讲解

    Java对数器的使用讲解

    今天小编就为大家分享一篇关于Java对数器的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • jdbc连SQL server显示1433端口连接失败图文解决方法

    jdbc连SQL server显示1433端口连接失败图文解决方法

    这篇文章主要给大家介绍了关于jdbc连SQL server显示1433端口连接失败的图文解决方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-06-06
  • Java基于面向对象实现一个战士小游戏

    Java基于面向对象实现一个战士小游戏

    这篇文章主要为大家详细介绍了Java如何基于面向对象实现一个战士小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下
    2022-07-07

最新评论