Java 实现JSON字符串、JSON对象和Java对象的相互转换(fastjson)_java json赋值给对象-程序员宅基地

技术标签: json转换为java对象  Java杂记  fastjson  Java对象转换为json  json、java的转换  

一、准备工作

  定义三个json字符串用于以下测试:

//json字符串-简单对象
String jsonStr = "{\"studentName\":\"张三\",\"studentAge\":18}";
//json字符串-数组类型
String  jsonArrStr = "[{\"studentName\":\"张三\",\"studentAge\":18},{\"studentName\":\"李四\",\"studentAge\":17}]";
//json字符串-复杂对象
String  complexJsonStr= "{\"teacherName\":\"李寻欢\",\"teacherAge\":30,\"course\":{\"courseName\":\"武术\",\"code\":110},
                     \"students\":[{\"studentName\":\"张三\",\"studentAge\":18},{\"studentName\":\"李四\",\"studentAge\":19}]}";

二、json字符串、json对象、java对象的转换方法

 1.JSON字符串到JSON对象的转换

(1)json字符串-简单对象与JSONObject之间的转换

JSONObject jsonObj = JSON.parseObject(jsonStr);

(2)json字符串-数组类型与JSONArray之间的转换

JSONArray jsonArray = JSON.parseArray(jsonArrStr);
//遍历JSONArray方法1
for(int i = 0; i < jsonArray.size(); i++){
   JSONObject jsonObj = jsonArray.getJSONObject(i); 
}
//遍历JSONArray方法2
for(Object obj : jsonArray){
    JSONObject jsonObject = (JSONObject) obj;
}

(3)json字符串-复杂对象与JSONObject之间的转换

JSONObject jsonObj = JSON.parseObject(complexJsonStr);
//取出复杂对象中各项内容
String teacherName = jsonObj.getString("teacherName");
Integer teacherAge = jsonObj.getInteger("teacherAge");
JSONObject course = jsonObj.getJSONObject("course");
JSONArray students = jsonObj.getJSONArray("students");

2.JSON对象到JSON字符串的转换

JSONObject jsonObj = new JSONObject();
//JSONObject到JSON字符串的转换
String jsonStr = jsonObj.toJSONString();

3.JSON字符串到Java对象的转换

JSON字符串与JavaBean之间的转换建议使用TypeReference<T>类

(1)json字符串-简单对象与Java对象之间的转换

// 方法1
Student student = JSON.parseObject(jsonStr , new TypeReference<Student>() {});
// 方法2
Student student = JSON.parseObject(jsonStr , Student.class);

(2)json字符串-数组与Java对象之间的转换

ArrayList<Student> students = JSON.parseObject(jsonArrStr, new TypeReference<ArrayList<Student>>() {});
for (Student student : students) {
   System.out.println(student.getStudentName()+":"+student.getStudentAge());
}

(3)json字符串-复杂对象与Java对象之间的转换

Teacher teacher = JSON.parseObject(complexJsonStr, new TypeReference<Teacher>() {});
//获取teacher中的内容
String teacherName = teacher.getTeacherName();
Integer teacherAge = teacher.getTeacherAge();
Course course = teacher.getCourse();
List<Student> students = teacher.getStudents();

 4.Java对象到JSON字符串的转换

Teacher teacher = new Teacher();
String jsonStr = JSON.toJSONString(teacher);

 5.Java对象到JSON对象的转换

String jsonStr= JSON.toJSONString(student);
JSONObject jsonObj = JSON.parseObject(jsonStr);

6.JSON对象到Java对象的转换

# 方法1,先转换为json字符串,再使用parseObject
String jsonStr = jsonObj.toJSONString();
Student stu = JSON.parseObject(jsonStr,new TypeReference<Student>() {});
# 方法2,直接使用toJavaObject
Student stu = JSON.toJavaObject(jsonObj, Student.class);

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012723673/article/details/109613250

智能推荐

达梦8数据库重做日志设置问题_达梦修改重做日志大小-程序员宅基地

文章浏览阅读468次。达梦8数据库配置多个日志文件及调整设置日志文件大小。_达梦修改重做日志大小

py BeautifulSoup 库, 爬取及xml解析_beautifulsoup和python处理xml 排序-程序员宅基地

文章浏览阅读996次。BeautifulSoup 类比于 java中的 JSoup 工具.安装pip install beautifulsoup4. 如果是 anaconda 的话, 或许已经自带了.参考quick startBeautiful Soup 4.4.0 documentation_beautifulsoup和python处理xml 排序

全程带阻:记一次授权网络攻防演练(下)_获取据点 攻防沙盘演练-程序员宅基地

文章浏览阅读905次。*本文作者:yangyangwithgnu,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。在一次漏洞赏金活动中,挖掘到一个不标准的命令注入漏洞,我无法用命令分隔符、命令替换符注入新命令让系统执行,所以,从”型态”上讲,它不算是命令注入漏洞;但我又可以借助目标环境让载荷到达系统命令行,实现读写文件、执行新命令,所以,”神态”来看,..._获取据点 攻防沙盘演练

GWT编写hello world-程序员宅基地

文章浏览阅读170次。GWT是Google Web Toolkit的缩写.是google为了开发ajax而做的一个框架.采用的概念是用java开发程序之后,用GWT转换成js和html.debug之类的也可以在java的IDE中调试。为java程序员开发ajax提供也方便。也给那些熟练c/s开发b/s人带来了惊喜。本文主要介绍用gwt编写一个hello world!准备工作:eclipse3.2 gwt安装GW..._gwt hello world

uni-app介绍_uniapp-程序员宅基地

文章浏览阅读7.1k次。Uni-app的特点是使用Vue.js作为开发语言,可以在不同的移动端平台上共享组件库和业务逻辑代码,大大提高了开发效率和代码重用率。pages.json :文件用来对 uni-app 进行全局配置,决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar 等。App.vue:是我们的跟组件,所有页面都是在App.vue下进行切换的,是页面入口文件,可以调用应用的生命周期函数。manifest.json :文件是应用的配置文件,用于指定应用的名称、图标、权限等。pages:所有的页面存放目录。_uniapp

【idea】idea 常用快捷键(每个都有操作演示)_idea快捷键大全最新-程序员宅基地

文章浏览阅读8.4k次,点赞16次,收藏80次。以下的效果演示图,是关于快速移动光标、快速选择文字的功能,前期用了一点时间记这些快捷键,但时间久了,就像你去打一个字一样,不会去想这个字的拼音是什么了,换回来的是减少了来回切换鼠标、键盘的频率,个人觉得还是很值得一用的。Undo 操作可以撤销你的修改,如果你想反撤销,即还想要撤销前的内容,就要用到与 Undo 相反的功能 Redo 了,关键字:Redo、快捷键:Ctrl + Shift + Z。设置好书签后,按 Ctrl + 你设置的数字 就可以跳转了,注意数字是主键盘区的,不是右侧数字键区的。_idea快捷键大全最新

随便推点

【校园二手小程序】校园二手物品销售、置换小程序课题研究背景、目的、意义_校园闲置换购平台选题目的与意义-程序员宅基地

文章浏览阅读751次。背景:随着大学生群体的不断增加,校园内产生了大量的二手物品,包括教材、电子设备、衣物等。然而,这些二手物品的交易并不便利,学生们往往需要花费大量时间和精力去寻找需要的物品或者处理自己不需要的物品。因此,开发一个校园二手物品销售、置换的小程序可以为学生提供一个便捷的交易平台,帮助他们更快速地处理自己的二手物品需求。目的:本课题旨在研究开发一个校园二手物品销售、置换的小程序,以解决学生们在校园内二手物品交易中的问题。通过该小程序,学生们可以方便地发布自己的二手物品信息、浏览他人发布的二手物品信息,并进行_校园闲置换购平台选题目的与意义

《视觉slam十四讲》笔记及课后习题-第4讲-李群与李代数_十四讲第四讲课后习题-程序员宅基地

文章浏览阅读510次。前言随手翻了下,这是《视觉slam十四讲》书里最理论的一章了,看完了觉得也挺有趣的!理论部分李群与李代数是什么?为什么slam要引入它们?李群首先从群说起,群是一种只定义一种运算的集合,需要满足“封结幺逆”四个条件,可以验证,旋转矩阵(集合)和矩阵乘法(运算)可以满足上述条件,可以构成一种群,其他常见的如整数和加法运算(Z,+)也可以构成一种群李群是一种光滑连续的群,像(Z,+)就是李群。李代数旋转矩阵满足对时间求导满足这样矩阵R˙(t)R(t)T\dot{R}(t)R(t)^T_十四讲第四讲课后习题

国家数据局提出数据要素十大应用场景_数据要素应用场景-程序员宅基地

文章浏览阅读3.2k次,点赞49次,收藏48次。国家数据局近期研究起草了《“数据要素×”三年行动计划(2024—2026年)(征求意见稿)》,本介绍了该行动计划提出的十大数据要素应用场景。_数据要素应用场景

婚恋相亲交友小程序婚介红娘同城相亲交友APP源码征婚礼物线下活动-程序员宅基地

文章浏览阅读275次,点赞4次,收藏5次。这个婚恋平台不仅考虑了用户的交友需求,还提供了专业的红娘服务和丰富的活动,同时还考虑了平台的推广和运营,功能相当全面。:专为红娘(婚恋顾问)设计的客户关系管理系统。:对整个平台进行全面管理和设置。:用于平台的推广和分销功能。:平台上的商城管理功能。

mina3源码分析,启动过程分析(一)_mina 启动流程-程序员宅基地

文章浏览阅读417次。上图为服务端TCPServer类的继承关系,主要实现了IoServer和IoService两个接口,IoServer定义了bind、unbind等绑定地址的操作,IoService主要定义了Filters过滤器,用于在处理具体逻辑前进行一系列过滤操作,IoHandler具体业务逻辑处理,SessionConfig负责回话相关的配置信息。 具体启动过程如下所示:_mina 启动流程

Postfix的工作原理及启动关闭重启命令-程序员宅基地

文章浏览阅读2.8k次。传统的Sendmail将所有功能都集中在同一个程序里,这种结构我们称之为“单体式设计”(monolithic).Postfix采用专职负责的策略,不同的功能分别交由不同的专门程序处理,这种结构称为“模块化设计”(modular)。这些自成一格的专门程序,我们称之为组件(component)。大多数组件都是以daemon的形式存在,也就是常驻在系统内存里的连续动作的后台进程(background ..._postfix怎么重启

推荐文章

热门文章

相关标签