JSONObject如何转为实体类对象

 更新时间:2024年11月11日 09:17:31   作者:有点野的程序猿  
介绍了JSONObject转为实体类对象的三种方法:JSONObject中的toJavaObject方法和getObject方法支持深转换,而JSON中的parseObject方法只能转换一层对象,此外,还补充说明了在对JSON转为实体类对象时,无论JSON中的数据字段是否多于或少于实体类中字段,转化都不会报错

JSONObject转为实体类对象

JSONObject js = new JSONObject();
js.put("name", "张三");
js.put("age", 18);
Student student = JSON.toJavaObject(js, Student.class);
Student student1 = JSON.parseObject(String.valueOf(js), Student.class);

注:

  • JSON中的toJavaObject方法和JSONObject中的getObject方法支持深转换,可以转换实体对象;
  • 而JSON中的parseObject方法只能转换一层对象;

深转换

以上边代码中的js为例:

深转换的的意思也就是如果在js中再put一个student对象,那么parseObject是不能转换js中的student对象的。

补充说明

新增一个知识点

在对json转为实体类对象时,无论json中的数据字段是否多于或少于实体类中字段,转化都不会报错

举个例子:

//一个Student实体类,属性包括姓名和年龄
@Data
public class Student {
    private String name;

    private Integer age;
}

写一个转为实体类的代码

  • 情况一:json字段多于实体类字段
public class test {
    public static void main(String[] args) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "zhangsan");
        jsonObject.put("age", 18);
        jsonObject.put("gender", "male");
        Student student = JSON.parseObject(String.valueOf(jsonObject), Student.class);
        Student student1 = JSON.toJavaObject(jsonObject, Student.class);
        System.out.println(student);
        System.out.println(student1);
    }
}

结果

  • 情况二:json字段少于实体类字段
public class test {
    public static void main(String[] args) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "zhangsan");
        //jsonObject.put("age", 18);
        //jsonObject.put("gender", "male");
        Student student = JSON.parseObject(String.valueOf(jsonObject), Student.class);
        Student student1 = JSON.toJavaObject(jsonObject, Student.class);
        System.out.println(student);
        System.out.println(student1);
    }
}

结果

注:这个点其实挺重要的,这充分说明了一件事,那就是json数据格式的灵活性。

总结

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

相关文章

  • java 终止线程的4种方式小结

    java 终止线程的4种方式小结

    本文主要介绍了java终止线程的4种方式小结,包含布尔标志位,interrupt()方法,stop()方法和Thread.interrupt()方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • Springboot如何实现对配置文件中的明文密码加密

    Springboot如何实现对配置文件中的明文密码加密

    这篇文章主要介绍了Springboot如何实现对配置文件中的明文密码加密问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Nacos配置管理实践(手把手教你搭建Nacos集群)

    Nacos配置管理实践(手把手教你搭建Nacos集群)

    本文详解Nacos配置管理在微服务中的实现,包括通过bootstrap.yml读取Nacos配置、配置优先级规则(本地>服务名>环境)、热更新机制及集群搭建步骤(数据库初始化、Nginx反向代理),强调多环境隔离与容灾部署优化
    2025-08-08
  • Java中instanceof关键字实例讲解

    Java中instanceof关键字实例讲解

    大家好,本篇文章主要讲的是Java中instanceof关键字实例讲解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • java mybatisplus批量新增和更新方式

    java mybatisplus批量新增和更新方式

    文章主要介绍使用Javamapper框架通过XML配置实现批量新增和更新操作,包含单字段更新(如删除标记)及多字段更新的方法,但内容存在格式混乱问题,需进一步明确具体实现细节
    2025-09-09
  • 详解Spring Cloud 跨服务数据聚合框架

    详解Spring Cloud 跨服务数据聚合框架

    这篇文章主要介绍了详解Spring Cloud 跨服务数据聚合框架,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • java读取resources文件详解及实现代码

    java读取resources文件详解及实现代码

    这篇文章主要介绍了java读取resources文件详解及实现代码的相关资料,在开发项目的时候经常会遇到读取文件夹里面的内容,需要的朋友可以参考下
    2017-07-07
  • SpringCloud Webflux过滤器增加header传递方式

    SpringCloud Webflux过滤器增加header传递方式

    这篇文章主要介绍了SpringCloud Webflux过滤器增加header传递方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • SpringBoot多模块依赖冲突排查与架构优化实战

    SpringBoot多模块依赖冲突排查与架构优化实战

    本文详细记录了在SpringBoot多模块项目开发中遇到的依赖版本冲突、模块依赖设计不合理等问题的排查和解决方案的过程,主要重点关注了父模块依赖管理、模块化拆分、按需依赖等等,需要的朋友可以参考下
    2026-04-04
  • Java 给图片和动图添加水印的方法

    Java 给图片和动图添加水印的方法

    本篇文章主要介绍了Java 给图片和动图添加水印的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04

最新评论