fastjson处理json
返回主页 你是风儿
博客园首页新随笔联系订阅管理
随笔 - 29 文章 - 0 评论 - 23
FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。 JSONObject:fastJson提供的json对象。 JSONArray:fastJson提供json数组对象。 我们可以把JSONObject当成一个Map<String,Object>来看,只是JSONObject提供了更为丰富便捷的方法,方便我们对于对象属性的操作。我们看一下源码。 同样我们可以把JSONArray当做一个List<Object>,可以把JSONArray看成JSONObject对象的一个集合。 此外,由于JSONObject和JSONArray继承了JSON,所以说也可以直接使用两者对JSON格式字符串与JSON对象及javaBean之间做转换,不过为了避免混淆我们还是使用JSON。 首先定义三个json格式的字符串,作为我们的数据源。 复制代码
//json字符串-简单对象型
private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";
//json字符串-数组类型
private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
//复杂格式json字符串
private static final String COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";
复制代码 示例1:JSON格式字符串与JSON对象之间的转换。 示例1.1-json字符串-简单对象型与JSONObject之间的转换 复制代码
/**
* json字符串-简单对象型与JSONObject之间的转换
*/
public static void testJSONStrToJSONObject(){ JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);
//JSONObject jsonObject1 = JSONObject.parseObject(JSON_OBJ_STR); //因为JSONObject继承了JSON,所以这样也是可以的 System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge")); }
复制代码 示例1.2-json字符串-数组类型与JSONArray之间的转换 复制代码
/**
* json字符串-数组类型与JSONArray之间的转换
*/
public static void testJSONStrToJSONArray(){ JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
//JSONArray jsonArray1 = JSONArray.parseArray(JSON_ARRAY_STR);//因为JSONArray继承了JSON,所以这样也是可以的 //遍历方式1
int size = jsonArray.size();
for (int i = 0; i < size; i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
} //遍历方式2
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
}
}
复制代码 示例1.3-复杂json格式字符串与JSONObject之间的转换 复制代码
/**
* 复杂json格式字符串与JSONObject之间的转换
*/
public static void testComplexJSONStrToJSONObject(){ JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);
//JSONObject jsonObject1 = JSONObject.parseObject(COMPLEX_JSON_STR);//因为JSONObject继承了JSON,所以这样也是可以的 String teacherName = jsonObject.getString("teacherName");
Integer teacherAge = jsonObject.getInteger("teacherAge");
JSONObject course = jsonObject.getJSONObject("course");
JSONArray students = jsonObject.getJSONArray("students"); }
复制代码 示例2:JSON格式字符串与javaBean之间的转换。 首先,我们针对数据源所示的字符串,提供三个javaBean。 复制代码
public class Student { private String studentName;
private Integer studentAge; public String getStudentName() {
return studentName;
} public void setStudentName(String studentName) {
this.studentName = studentName;
} public Integer getStudentAge() {
return studentAge;
} public void setStudentAge(Integer studentAge) {
this.studentAge = studentAge;
}
}
复制代码
复制代码
public class Course { private String courseName;
private Integer code; public String getCourseName() {
return courseName;
} public void setCourseName(String courseName) {
this.courseName = courseName;
} public Integer getCode() {
return code;
} public void setCode(Integer code) {
this.code = code;
}
}
复制代码
复制代码
public class Teacher { private String teacherName;
private Integer teacherAge;
private Course course;
private List<Student> students; public String getTeacherName() {
return teacherName;
} public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
} public Integer getTeacherAge() {
return teacherAge;
} public void setTeacherAge(Integer teacherAge) {
this.teacherAge = teacherAge;
} public Course getCourse() {
return course;
} public void setCourse(Course course) {
this.course = course;
} public List<Student> getStudents() {
return students;
} public void setStudents(List<Student> students) {
this.students = students;
}
}
复制代码
json字符串与javaBean之间的转换推荐使用 TypeReference<T> 这个类,使用泛型可以更加清晰,当然也有其它的转换方式,这里就不做探讨了。 示例2.1-json字符串-简单对象型与javaBean之间的转换 复制代码
/**
* json字符串-简单对象与JavaBean_obj之间的转换
*/
public static void testJSONStrToJavaBeanObj(){ Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});
//Student student1 = JSONObject.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});//因为JSONObject继承了JSON,所以这样也是可以的 System.out.println(student.getStudentName()+":"+student.getStudentAge()); }
复制代码
示例2.2-json字符串-数组类型与javaBean之间的转换 复制代码
/**
* json字符串-数组类型与JavaBean_List之间的转换
*/
public static void testJSONStrToJavaBeanList(){ ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});
//ArrayList<Student> students1 = JSONArray.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});//因为JSONArray继承了JSON,所以这样也是可以的 for (Student student : students) {
System.out.println(student.getStudentName()+":"+student.getStudentAge());
}
}
复制代码
示例2.3-复杂json格式字符串与与javaBean之间的转换 复制代码
/**
* 复杂json格式字符串与JavaBean_obj之间的转换
*/
public static void testComplexJSONStrToJavaBean(){ Teacher teacher = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});
//Teacher teacher1 = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});//因为JSONObject继承了JSON,所以这样也是可以的
String teacherName = teacher.getTeacherName();
Integer teacherAge = teacher.getTeacherAge();
Course course = teacher.getCourse();
List<Student> students = teacher.getStudents();
}
复制代码
对于TypeReference<T>,由于其构造方法使用 protected 进行修饰,所以在其他包下创建其对象的时候,要用其实现类的子类:new TypeReference<Teacher>() {} 此外的: 1,对于JSON对象与JSON格式字符串的转换可以直接用 toJSONString()这个方法。 2,javaBean与JSON格式字符串之间的转换要用到:JSON.toJSONString(obj); 3,javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。 最后说一点,我们作为程序员,研究问题还是要仔细深入一点的。当你对原理了解的有够透彻,开发起来也就得心应手了,很多开发中的问题和疑惑也就迎刃而解了,而且在面对其他问题的时候也可做到触类旁通。当然在开发中没有太多的时间让你去研究原理,开发中要以实现功能为前提,可等项目上线的后,你有大把的时间或者空余的时间,你大可去刨根问底,深入的去研究一项技术,为觉得这对一名程序员的成长是很重要的事情。 分类: JSON
好文要顶 关注我 收藏该文
你是风儿
关注 - 2
粉丝 - 54
+加关注
17 0
« 上一篇:快速排序算法
» 下一篇:mysql数据库插入数据获取自增主键的三种方式(jdbc PreparedStatement方式、mybatis useGeneratedKeys方式、mybatis selectKey方式)
posted @ 2017-07-02 14:42 你是风儿 阅读(192815) 评论(10) 编辑 收藏 评论列表
回复引用 #1楼 2017-11-18 14:59 esileme
可以可以,很不错~
支持(0)反对(0)
回复引用 #2楼 2017-12-18 13:58 回眸一下
nice啊
支持(0)反对(0)
回复引用 #3楼[楼主] 2017-12-19 20:21 你是风儿
@ 回眸一下
多谢
支持(0)反对(0)
回复引用 #4楼[楼主] 2017-12-19 20:22 你是风儿
@ esileme
多多指教
支持(0)反对(0)
回复引用 #5楼 2018-05-29 16:37 山中小楼夜听雨
多谢楼主
支持(0)反对(0)
回复引用 #6楼 2018-08-15 09:10 云中鵟
很赞同楼主结尾的话!
支持(0)反对(0)
回复引用 #7楼 2018-10-30 10:37 于宝柱
好全
支持(0)反对(0)
回复引用 #8楼 2018-11-28 10:16 稻香今天更新文章了吗
感谢大佬, 很强大
支持(0)反对(0)
回复引用 #9楼 2018-12-07 12:09 wizard_Q
没有嵌套的方法吗
支持(0)反对(0)
回复引用 #10楼 2018-12-10 15:22 flyduan
深度好文,详细明了.点个赞!
支持(0)反对(0)
刷新评论刷新页面返回顶部
发表评论
昵称:
王星辰宇 评论内容:引用 粗体 链接 缩进 代码 图片 退出 订阅评论 [Ctrl+Enter快捷键提交] 【推荐】超50万VC++源码: 大型组态工控、电力仿真CAD与GIS源码库!
【活动】华为云12.12会员节全场1折起 满额送Mate20
【活动】华为云会员节云服务特惠1折起
【推荐】服务器100%基准CPU性能,1核1G首年168元,限时特惠!
腾讯云1129 最新新闻:
· 子弹都打不碎的玻璃,为何用手轻轻一碰就碎了?
· TARS斩获2018年最佳原创开源软件奖
· 新西兰火箭创企发射成功,将13颗微型卫星送入轨道
· 途歌回应“退押金难”:退款需20+7个工作日 将缩短周期
· 嘲笑那块屏幕的人,根本不懂中国的穷孩子需要什么
» 更多新闻...
昵称:你是风儿
园龄:2年3个月
粉丝:54
关注:2
+加关注
< 2018年12月 >
日 一 二 三 四 五 六
25 26 27 28 29 30 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
搜索 常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
BeanUtils(1)
HttpServletRequest(1)
随笔分类
Ajax(4)
JSON(6)
mysql(5)
spring(9)
多线程(1)
其它(2)
前端技术(1)
数据结构和算法(1)
随笔档案
2018年4月 (1)
2017年12月 (1)
2017年7月 (1)
2017年4月 (1)
2017年3月 (5)
2017年2月 (15)
2017年1月 (5)
最新评论
1. Re:FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
深度好文,详细明了.点个赞!
--flyduan
2. Re:FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
没有嵌套的方法吗
--wizard_Q
3. Re:FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
感谢大佬, 很强大
--稻香今天更新文章了吗
4. Re:mysql(1)—— 详解一条sql语句的执行过程
看完第一段,个人感觉把DBMS比喻成“java中接口的实现类”更贴切一些
--夜蓝沙
5. Re:mysql(4)—— 表连接查询与where后使用子查询的性能分析。
我跟楼主有些相似,不过我是有个小毛病,就是我写的代码必须完全在我的掌控之内,每一个环节怎么运行的,流程怎么走的,我必须全部知道,否则我就不会继续写,直到我弄明白为止。不过我比楼主幸运,我们公司项目开发......
--夜蓝沙
阅读排行榜
1. FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换(192800)
2. 详解Ajax请求(四)——多个异步请求的执行顺序(21983)
3. JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换(18465)
4. 详解get请求和post请求参数中文乱码的解决办法(17131)
5. 使用getParameterMap()方法实现对请求参数的封装的工具类(10888)
评论排行榜
1. FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换(10)
2. mysql(1)—— 详解一条sql语句的执行过程(7)
3. mysql(4)—— 表连接查询与where后使用子查询的性能分析。(4)
4. 使用getParameterMap()方法实现对请求参数的封装的工具类(1)
5. 详解Ajax请求(四)——多个异步请求的执行顺序(1)
推荐排行榜
1. FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换(17)
2. mysql(4)—— 表连接查询与where后使用子查询的性能分析。(4)
3. mysql(2)—— 由笛卡尔积现象分析数据库表的连接(3)
4. 详解Ajax请求(四)——多个异步请求的执行顺序(3)
5. 快速排序算法(2)
Copyright ©2018 你是风儿
fastjson处理json的更多相关文章
- FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. JSONObject:fas ...
- fastjson转换json字符串key的首字母小写变大写的解决办法
https://blog.csdn.net/erbao_2014/article/details/53688934 问题描述在开发过程中,由于接口文档的描述,要求json字符串的key首字母为大写,而 ...
- fastjson生成JSON字符串的时候出现$ref
fastjson生成JSON字符串的时候出现$ref 转载自:http://wuzhuti.cn/201426!826!05!130202.html 可以通过选项 DisableCircularRef ...
- Spring Boot返回json数据及完美使用FastJson解析Json数据
Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...
- springboot使用fastJson作为json解析框架
springboot使用fastJson作为json解析框架 springboot默认自带json解析框架,默认使用jackson,如果使用fastjson,可以按照下列方式配置使用 〇.搭建spri ...
- 使用Fastjson生成Json字符串少字段属性(数据丢失)
最后是控制台打印生成的结果如下:FastJson生成字符串是:{"id":"2","name":"节点1"," ...
- fastjson对json操作
fastjson对json字符串JSONObject和JSONArray互相转换操作示例 fastjson的方法: Fastjson API入口类是com.alibaba.fastjson.JSON ...
- fastjson解析json数组
1.fastjson解析json数组(直接上代码) import java.util.ArrayList; import java.util.List; import com.alibaba.fast ...
- FastJson生成json时,显示Null属性
FastJson生成json时,默认不会输出null字段. 移动端,有时候,需要后端提供完整的字段说明. Map < String , Object > jsonMap = new Has ...
随机推荐
- PhoneGap API 之多媒体
一. MediaApi 简单介绍 PhoneGap API Media 对象提供录制和回放设备上的音频文件的能力 参数: var media = new Media(src, mediaSuccess ...
- IBM websphere MQ远程队列的简单配置
原理: 1.远程队列分发送方和接收方 2.接收方配置: 接收方配置要先拿到对方的发送通道配置,接收方的队列名称必须和远程发送方的队列名称一致,告诉远程发送方,你的地址,队列管理器名称等信息,在通道中建 ...
- Oracle 数据库视图与基表的关系
本文转载自:http://www.linuxidc.com/Linux/2015-03/115165.htm 一:首先解释什么是视图: 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中 ...
- AWESOME SWIFT-swift.libhunt.com-swift类库网站
https://swift.libhunt.com/categories/688-events 29 Events libraries and projects ORDERED BY POPULARI ...
- 系统监控zabbix
zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统 ...
- SpringMVC(1)
1.简要说明: Spring为展现层提供的基于MVC设计理念的优秀web框架,目前主流的框架 Spring3.0以后全面超越Struts2,成为最优秀的MVC框架 Spring MVC通过一套MVC注 ...
- CVPR 2016 paper reading (3)
DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations, Ziwei Liu, Pin ...
- 启动tomcat的时候为啥你启动的是8,启动起来的确实其他的Tomcat
如果发现,是启动tomcat的时候为啥你启动的是8,启动起来的确实其他的Tomcat ,你可以去看看你的环境变量,是不是配了一个tomcat,
- Oracle创建序列,Oracle创建序列语法
-- Oracle创建序列 Create sequence CREATE SEQUENCE SEQ_SINGER -- 序列名称 START WITH 2 -- 开始数字 MAXVALUE 999 ...
- Spring整合Mybatis SQL语句的输出
[1.修改Spring-Mybatis] <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSes ...