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实现简单的图片类别识别

    基于java实现简单的图片类别识别

    这篇文章主要为大家详细介绍了如何基于java实现简单的图片类别识别功能,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Java类加载机制实现步骤解析

    Java类加载机制实现步骤解析

    这篇文章主要介绍了Java类加载机制实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 详解Spring如何解决循环引用的问题

    详解Spring如何解决循环引用的问题

    在Spring框架中,当两个或多个Bean之间存在相互依赖关系时,可能会导致循环引用的问题,循环引用指的是两个或多个Bean之间互相依赖,形成一个循环链,本文将和大家一起探讨Spring如何解决循环引用的问题,感兴趣的小伙伴跟着小编一起来看看吧
    2023-08-08
  • Java如何操作MongoDB常用API文档

    Java如何操作MongoDB常用API文档

    这篇文章主要介绍了Java如何操作MongoDB常用API文档,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • java jni调用c函数实例分享(java调用c函数)

    java jni调用c函数实例分享(java调用c函数)

    Java代码中调用C/C++代码,当然是使用JNI,JNI是Java native interface的简写,可以译作Java原生接口,下面看实例吧
    2013-12-12
  • idea自带database连接mysql失败问题的解决办法

    idea自带database连接mysql失败问题的解决办法

    在IDEA⾃带的数据库连接⼯具中,可以连接MySQL数据库,但是有的时候连接出现错误,连接不上数据库,下面这篇文章主要给大家介绍了关于idea自带database连接mysql失败问题的解决办法,需要的朋友可以参考下
    2023-06-06
  • Java  队列 Queue 用法实例详解

    Java 队列 Queue 用法实例详解

    本文实例讲述了Java内置队列类Queue用法,分享给大家供大家参考
    2017-04-04
  • Java8实现Stream流的合并的方法展示

    Java8实现Stream流的合并的方法展示

    本文介绍了Java8中Stream流的合并方法,包括concat()、flatMap()和reduce()三种方法。其中,concat()方法可以将两个Stream流合并成一个,flatMap()方法可以将一个Stream流中的元素映射成多个Stream流并合并成一个,reduce()方法可以将Stream流中的元素逐个合并成一个结果
    2023-05-05
  • 分享java打印简单图形的实现代码

    分享java打印简单图形的实现代码

    这篇文章主要分享给大家运用java打印简单图形:三角形,菱形,四边形,需要的朋友可以参考下
    2015-07-07
  • Spring+SpringMVC+MyBatis深入学习及搭建(一)之MyBatis的基础知识

    Spring+SpringMVC+MyBatis深入学习及搭建(一)之MyBatis的基础知识

    这篇文章主要介绍了Spring+SpringMVC+MyBatis深入学习及搭建(一)之MyBatis的基础知识,需要的朋友可以参考下
    2017-05-05

最新评论