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)
上一篇 2022年10月7日 上午10:00
下一篇 2022年10月7日 上午10:00


相关推荐

  • div两端对齐

    div两端对齐parentDiv display flex align items center justify content space around width 100 parentDiv gt div display inline block width 45

    2026年3月26日
    2
  • android之Random.nextInt(k)陷阱「建议收藏」

    android之Random.nextInt(k)陷阱「建议收藏」API:Returnsapseudo-randomuniformlydistributedintinthehalf-openrange[0,k). 意思就是说,nextInt的取值是0到k-1,不包括k。

    2022年7月22日
    25
  • NTKO问题库

    NTKO问题库NTKO 问题库

    2026年3月19日
    3
  • 快速搭建个人博客——保姆级教程「建议收藏」

    文章目录序言本地网站开发工具WebStormVscode框架Hexo(强烈推荐)WordPress本地环境gitnode.jsHexo安装初始化主题样式Butterfly应用正式上线图床Butterfly配置GitHubPages配置服务器选购攻略阿里云学生专享活动专享腾讯云学生专享活动专享域名购买DNS解析添加域名添加解析记录服务器购买部署密码设定远程连接git配置安装NginxHexo配置修改备案ICP联网备案序言偶然间,看到某乎上高赞的一个问题:怎么证明下计算机专业学生的能力?问题下面呢,也是有

    2022年4月15日
    44
  • 新世界纪录:谷歌将圆周率计算到 31 万亿位

    新世界纪录:谷歌将圆周率计算到 31 万亿位(给技术最前线加星标,每天看技术热点)转自:开源中国社区为了挑战更精确的圆周率,谷歌工程师EmmaIwao在25台谷歌云的虚拟机上,执行专为圆周率设计的算法,成功计…

    2025年11月4日
    5
  • 小草客户端android2.2.4 g,小草客户端android2.2.5-小草app安卓版客户端android2.2.5预约 v2.2.5-优盘手机站…[通俗易懂]

    小草客户端android2.2.4 g,小草客户端android2.2.5-小草app安卓版客户端android2.2.5预约 v2.2.5-优盘手机站…[通俗易懂]小草客户端android2.2.5是一款很真实的线上社交互动平台,超多年轻人选择在这里,和大家展开精彩的互动玩法,有什么想法都可以大胆的表达出来,在这里认识自己喜欢的人,让你从此以后不会再觉得孤单了,这些精彩的玩法,给你带来了不少的乐趣体验。小草客户端android2.2.5特色:1、打造最真实的交友互动软件,简洁的界面设计吸引了很多人来体验。2、在这里能够轻松结交到全国各地的单身朋友,参与到热门…

    2022年6月15日
    59

发表回复

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

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