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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux x11vnc,X11vnc (简体中文)[通俗易懂]

    linux x11vnc,X11vnc (简体中文)[通俗易懂]WARNING:这将建立一个没有密码的VNC.意思是任何人都可以通过网络访问你的VNC并且能看到你的X界面.可以非常简单的通过SSH连接来避免这样的事情.设置x11vnc安装pacman-Sx11vnc运行首先你需要运行一个xserver服务器.使用startx或类似的.完成后运行startxx11vnc-display:0-auth~/.Xauthority如果失败,你…

    2022年10月23日
    0
  • freeswitch之呼叫中心acd模块开发

    freeswitch之呼叫中心acd模块开发一、定义:ACD(AutomaticCallDistributor)自动呼叫分配,也叫智能选择座席。它是呼叫中心整个前台接入系统逻辑功能的描述:把接入的呼叫转接到正确的座席员桌前。ACD是现代呼叫中心有别于一般的热线电话系统和自动应答系统的重要标志,其性能的优劣直接影响到呼叫中心的效率和顾客的满意度。二、ACD包含的功能点:1、程控交换功能ACD在本质上也是交换机的一种类型,必须具有程控交换最基本的话务交换功能。2、排队功能ACD必须具有话务排队的功能,所谓排队是指在内线都

    2022年7月14日
    16
  • HttpCanary下载_自我介绍网页模板代码

    HttpCanary下载_自我介绍网页模板代码前言首先,我们无论学习哪个框架,都要带着问题,带着思考去学习思考1:HttpRunner是什么?思考2:HttpRunner的设计模式是什么?思考3:为什么我们要学习HttpRunner?他的

    2022年7月31日
    2
  • VCL组件之编辑控件「建议收藏」

    VCL组件之编辑控件「建议收藏」Note以后将用两种方式提及组件,以组件的名称或定义组件的VCL类的名称。可以说“Label组件用于……”或说“TLabel用于……”,这两种方式谈到的是同一组件。编辑控件(EditContro

    2022年7月3日
    36
  • pycharmdjango项目实战_django项目实例精解

    pycharmdjango项目实战_django项目实例精解创建项目我们创建django项目有两种方式,命令行方式和使用pycharm工具创建,本文就介绍常用的pycharm工具创建首先点击django,输入项目的名称,选择创建好的虚拟环境,最后点击cre

    2022年7月29日
    3
  • java中volatile的作用_java中volatile关键字的作用与用法,讲的很透彻

    java中volatile的作用_java中volatile关键字的作用与用法,讲的很透彻volatile让变量每次在使用的时候,都从主存中取。而不是从各个线程的“工作内存”。volatile具有synchronized关键字的“可见性”,但是没有synchronized关键字的“并发正确性”,也就是说不保证线程执行的有序性。也就是说,volatile变量对于每次使用,线程都能得到当前volatile变量的最新值。但是volatile变量并不保证并发的正确性。=============…

    2022年5月28日
    29

发表回复

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

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