JSON字符串转为java对象

JSON字符串转为java对象在日常的java开发中,我们经常会需要接收到其它地方传过来的数据,格式也很多都是通过JSON格式来传递的。所以我们经常需要将JSON格式的数据转换为我们所需要的数据格式,比如javabean形式。对于只有一层的JSON格式的数据转换还是比较简单的。代码如下:Stringparam="{‘leader’:’headtearch’}";JSONObjectjsonObject…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

在日常的java开发中,我们经常会需要接收到其它地方传过来的数据,格式也很多都是通过JSON格式来传递的。

所以我们经常需要将JSON格式的数据转换为我们所需要的数据格式,比如javabean形式。

对于只有一层的JSON格式的数据转换还是比较简单的。代码如下:

String param = "{'leader':'headtearch'}";
JSONObject jsonObject  = JSONObject.fromObject(param);
School school = (School) JSONObject.toBean(jsonObject, School.class);
System.out.println(school.toString());

但是我们经常会碰到json格式中会包含有list数据,会有两层乃至三层或者更多。如果还是通过上面一种方法来转换的话,你会发现她转出来的list对象不是你想要的类型,而是MorphDynaBean类型,而且取数据也不好取。这时就需要借助到map来实现转换了。代码如下:

String param = "{'leader':'headtearch','classrooms'[{'teacher':'litearch','student':'xiaowang'}]}";
JSONObject jsonObject  = JSONObject.fromObject(param);
Map<String,Class> classMap = new HashMap<String,Class>();
classMap.put("classrooms", ClassRoom.class);
School school = (School) JSONObject.toBean(jsonObject, School.class, classMap);
System.out.println(school.toString());

如果有三层或者更多层的话,只需要在classMap中put到相对于的名字就行。

String param = "{'leader':'headtearch','classrooms'[{'teacher':'litearch','student':'xiaowang',
'grades':[{'xiaowang':'A'}]}]}";

比如字符串是这样有三层,只需要加一个classMap.put(“grades”, Grade.class);即可。

如果用fastjson中的JSONObject对象就更简单了。看代码:

String param = "{'leader':'headtearch','classrooms'[{'teacher':'litearch','student':'xiaowang'}]}";
JSONObject jsonObject  = JSONObject.parseObject(param);
School school = JSONObject.toJavaObject(param , School.class);

下面是实体类的一些代码。都是最简单的,一看就懂。我自己找这个也找了好一会,干脆写个最简单明了的。

public class School {

    private String leader;
    private List<ClassRoom> classrooms = new ArrayList<ClassRoom>();
    public String getLeader() {
        return leader;
    }
    public void setLeader(String leader) {
        this.leader = leader;
    }
    public List<ClassRoom> getClassrooms() {
        return classrooms;
    }
    public void setClassrooms(List<ClassRoom> classrooms) {
        this.classrooms = classrooms;
    }
    public String toString() {
        return "School [leader=" + leader + ", classrooms=" + classrooms + "]";
    }
    
}
public class ClassRoom {
    private String teacher;
    private String student;
    public String getTeacher() {
        return teacher;
    }
    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }
    public String getStudent() {
        return student;
    }
    public void setStudent(String student) {
        this.student = student;
    }
    public String toString() {
        return "ClassRoom [teacher=" + teacher + ", student=" + student + "]";
    }
    
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185032.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 批处理添加host_批处理修改文件内容

    批处理添加host_批处理修改文件内容一直都是手工修改host文件,这里提供个批处理修改host文件的方法,需要的朋友可以参考下。 @echo127.0.0.1baidu.com>>C:WindowsSystem32Driversetchosts这样就是换一行写入。如果还想换一行,就写:代码如下: @echo.>>C:WindowsSystem32Driversetchosts@echo1

    2022年10月12日
    5
  • js获取request中的值_set协议工作原理

    js获取request中的值_set协议工作原理设置http请求头HttpURLConnection.setRequestProperty(Stringkey,Stringvalue); 这个我居然都忘记了,哎~真是岁数大了,心好累。。。 例如:下面就是一个完整的原始网络请求方式HttpURLConnectionconn=null;try{…

    2025年10月23日
    2
  • 【菠萝狗四足机器人】二次开发教程–第三章 【腿部校准和步态效果调试】

    【菠萝狗四足机器人】二次开发教程–第三章 【腿部校准和步态效果调试】腿部校准和步态效果调试1前言2腿部调中(0位校准)3步态效果调试3.1重心标定3.2自动重心补偿量调节4结束1前言承接上次的教程,本次文章,将教你怎么对Py-appleDynamics6.5及6.5以后版本的软件进行腿部校准(调中)和步态效果调试。Py-appleDynamics开源四足控制软件Github调中顾名思义为“机器狗腿部中位调整“,既对机器人的腿部进行标定,使他的机械0位和软件0位重合,以实现机械的运动效果和软件对应。从Py-appleDynamic

    2022年6月4日
    28
  • Window基础(黑客基础)

    Window基础(黑客基础)一、Window重要目录1.ProgramData:C:\ProgramData是个公用的被创建文件夹或文件存放的地方,这些文件夹或文件仅由创建者完整控制。programdata是电脑C盘的一个系统文件夹2.ProgramFiles和ProgramFiles(86):程序软件默认安装目录,它们的区别是前者是安装64位软件,后者是安装32位软件3.Window:系统安装目录4….

    2022年5月2日
    40
  • vmware找不到vmx文件_虚拟机重启后文件丢失

    vmware找不到vmx文件_虚拟机重启后文件丢失在使用Vmware的过程中,不小心删除了vmx文件,导致Vmware无法启动。经过上网搜查资料,找到解决办法。vmx只是一个对Vmware文件的简单描述性文件,并不包含任何实质性信息,信息主要包含在vmdk和vmxf文件中。对于Ubuntu虚拟机,用记事本创建空白文件,在其中输入下面内容并保存为ubuntu.vmx即可。(其中加粗的部分是需要修改的内容,包括vmdk文件的

    2025年6月12日
    8
  • Django(76)isort工具对import导入进行排序「建议收藏」

    Django(76)isort工具对import导入进行排序「建议收藏」前言我们在开发项目时经常会进行导包有import*格式的,还有from*import*格式的,最后就会显示的很乱,那么有没有什么工具能对导包进行一键排序呢?答案是有的,使用isort工具i

    2022年7月29日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号