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 ...
随机推荐
- Intellij IDEA 修改编辑器背景颜色
对眼睛有益的RGB数值分别是(199,237,204)
- ADF系列-3.VO的查询
一·VO的计数查询 VO的计数查询有四种方式: 1.ViewObjectImpl::getRowCount() 这个方法从数据库中提取所有行,然后对每一行计数, 得到总行数.如果行数很大,这会影响性能 ...
- JAVA Collections常用方法
/* 集合框架的工具类 Collections: */ import java.util.*; class Test { public static void main(String [] args) ...
- Mysql数据库的简单语法
Mysql数据库是目前使用最为广泛的数据对,对于小型企业的支持度,比oracle数据库友好很多. mysql数据库的基本语法 1:创建并且使用数据库 找出服务器上当前存在什么数据库: SHOW DAT ...
- nodejs中如何连接mysql
nodejs中如何连接mysql,下面给出一个小Demo. 第一步安装mysql模块npm install mysql 第二步导入mysql模块var mysql = require('mysql') ...
- HDU 1016 Prime Ring Problem(素数环问题)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1016 Prime Ring Problem Time Limit: 4000/2000 MS (Jav ...
- nodejs 做的带管理后台的东东,主要学习到 ....我忘了学到什么了
效果 http://www.steel-pot.com/ function handleStr(str,isHtml,callback) { if(!isHtml) { callback(str); ...
- careercup-扩展性和存储限制10.4
题目 有一个数组,里面的数在1到N之间,N最大为32000.数组中可能有重复的元素(即有的元素 存在2份),你并不知道N是多少.给你4KB的内存,你怎么把数组中重复的元素打印出来. 解答 我们有4KB ...
- Java中,如何跳出当前的多重嵌套循环
在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环.(Java中支持带标签的break和continue语句)
- Jumpserver堡垒机搭建(脚本自动化)
#!/bin/bash # coding: utf- # Copyright (c) set -e #返回值为非0时,退出脚本 echo "0. 系统的一些配置" setenfor ...