FastJson 解析、序列化及反序列化
一、环境准备:使用maven特性在pom.xml中导入fastjson的依赖包
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
二、序列化
1.创建实体类(根据json的key值创建对象属性)
1 package cn.xiaobing.pojo;
2
3 /**创建实体类ResultJson,属性与提供jsonString中的key保持一致
4 * @author Administrator
5 */
6 public class ResultJson {
7 private String status;
8 private String message;
9 public String getStatus() {
10 return status;
11 }
12 public void setStatus(String status) {
13 this.status = status;
14 }
15 public String getMessage() {
16 return message;
17 }
18 public void setMessage(String message) {
19 this.message = message;
20 }
21
22 public ResultJson() {
23 super();
24 }
25 public ResultJson(String status, String message) {
26 super();
27 this.status = status;
28 this.message = message;
29 }
30 @Override
31 public String toString() {
32 return "ResultJson [status=" + status + ", message=" + message + "]";
33 }
34 }
2.利用fastJson实现序列化(ResultJson对象转化为json字符串)
package cn.xiaobing.json; import com.alibaba.fastjson.JSONObject; import cn.xiaobing.pojo.ResultJson; public class jsonDemo02 {
/**将对象序列化成json
* @return jsonString
*/
public static String entityToJsonString () {
//构造器实例化对象
ResultJson resutlJson = new ResultJson("2","登录失败,密码错误!");
//利用fastjson中JSONObject类的toJSONString方法,实现将对象ResultJson转化为jsonString
// String jsonString = JSONObject.toJSONString(resutlJson);
//如果需要美化输出json格式
String jsonString = JSONObject.toJSONString(resutlJson,true);
return jsonString;
}
public static void main(String[] args) {
String jsonString = entityToJsonString();
System.out.println("ResultJson序列化json字符串:"+"\n"+jsonString);
}
}
三、反序列化
1.提供json字符串如:
{"status":"1","message":"登录成功"}
{"status":"1","message":"登录成功","data":{"name":"Tom","age":"18","phone":"18888888888"}}
2.修改实体类对象(新增json多层数据结构)
1 package cn.xiaobing.pojo;
2
3 import java.util.Map;
4
5 /**创建实体类ResultJson,属性与提供jsonString中的key保持一致
6 * @author Administrator
7 */
8 public class ResultJson {
9 private String status;
10 private String message;
11 private Map<String,String> datas;
12 public String getStatus() {
13 return status;
14 }
15 public void setStatus(String status) {
16 this.status = status;
17 }
18 public String getMessage() {
19 return message;
20 }
21 public void setMessage(String message) {
22 this.message = message;
23 }
24
25 public Map<String, String> getDatas() {
26 return datas;
27 }
28 public void setDatas(Map<String, String> datas) {
29 this.datas = datas;
30 }
31 public ResultJson() {
32 super();
33 }
34 public ResultJson(String status, String message, Map<String, String> datas) {
35 super();
36 this.status = status;
37 this.message = message;
38 this.datas = datas;
39 }
40 @Override
41 public String toString() {
42 return "ResultJson [status=" + status + ", message=" + message + ", datas=" + datas + "]";
43 }
44
45 }
3.利用fastJson实现json字符串的反序列化
1 package cn.xiaobing.json;
2
3 import java.util.Map;
4 import com.alibaba.fastjson.JSONObject;
5 import cn.xiaobing.pojo.ResultJson;
6
7 /**利用fastJson实现json字符串的反序列化
8 * @author Administrator
9 */
10 public class jsonDemo01 {
11 //提供json字符串{"status":"1","message":"登录成功"}
12 static String jsonString = "{\"status\":\"1\",\"message\":\"登录成功\"}";
13 static String multilayerJsonString = "{\"status\":\"1\",\"message\":\"登录成功\",\"datas\":{\"name\":\"Tom\",\"age\":\"18\",\"phone\":\"18888888888\"}}";
14 /**
15 * 利用fastJson实现json字符串反序列化为对象
16 */
17 public static ResultJson jsonStringToEntity(String jsonString) {
18
19 //创建实体类 resultJson,利用fastjson中JSONObject类的parseObject方法,实现将jsonString转化为对象ResultJson
20 ResultJson resultJson = JSONObject.parseObject(jsonString, ResultJson.class);
21 return resultJson;
22 }
23 /**
24 * 利用fastJson实现json字符串保存Map中
25 * @param jsonString
26 */
27 public static Map<String, String> jsonStringToMapping(String jsonString) {
28 //将json字符串封装到Map
29 Map<String, String> map = (Map<String, String>) JSONObject.parse(jsonString);
30 return map;
31 }
32 /**
33 * 利用fastJson实现json(多层嵌套json)字符串反序列化为对象
34 */
35 public static ResultJson multilayerJsonStringToEntity(String multilayerJsonString) {
36
37 //创建实体类 resultJson,利用fastjson中JSONObject类的parseObject方法,实现将jsonString转化为对象ResultJson
38 ResultJson resultJson = JSONObject.parseObject(multilayerJsonString, ResultJson.class);
39 return resultJson;
40 }
41
42 public static void main(String[] args) {
43 ResultJson resultJson1 = jsonStringToEntity(jsonString);
44 System.out.println("json转换成对象输出:"+"{status:"+resultJson1.getStatus()+",message:"+resultJson1.getMessage()+"}");
45 Map<String, String> map1 = jsonStringToMapping(jsonString);
46 System.out.println("json转换成Map输出:"+"{status:"+map1.get("status")+",message:"+map1.get("message")+"}");
47 ResultJson resultJson2 = multilayerJsonStringToEntity(multilayerJsonString);
48 Map<String, String> map2 = resultJson2.getDatas();
49 System.out.println("json(多层嵌套json)转换成对象输出:"+"{status:"+resultJson2.getStatus()+",message:"+resultJson2.getMessage()+
50 " ,datas:{name:"+map2.get("name")+",age:"+map2.get("age")+",phone:"+map2.get("phone")+"}}");
51 }
52 }
4.总结分享,不足之处后续补充!
FastJson 解析、序列化及反序列化的更多相关文章
- Android 中的Json解析工具fastjson 、序列化、反序列化
Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备 ...
- 自定义fastjson对枚举类型的序列化及反序列化过程
通常,fastjson在序列化及反序列化枚举时,一般以下几种策略: 1).根据枚举的name值序列化及反序列化(默认) 2).根据枚举的ordinal序列化及反序列化 3).根据枚举的toString ...
- java分享第十三天(fastjson生成和解析json数据,序列化和反序列化数据)
fastjson简介:Fastjson是一个Java语言编写的高性能功能完善的JSON库.fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jack ...
- fastjson生成和解析json数据,序列化和反序列化数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...
- 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)
在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...
- Windowsphone 之xml序列化和反序列化的应用(WebService解析返回的数据DataSet )
关于Xml的序列化和反序列化: 可以看这篇文章,http://www.cnblogs.com/Windows-phone/p/3243575.html WebService解析返回的数据DataSet ...
- FastJson实现复杂对象序列化与反序列化
原文:http://blog.csdn.net/xqhadoop/article/details/62217954 一.认识FastJson 1.优势 fastjson是目前java语言中最快的jso ...
- DRF框架(二)——解析模块(parsers)、异常模块(exception_handler)、响应模块(Response)、三大序列化组件介绍、Serializer组件(序列化与反序列化使用)
解析模块 为什么要配置解析模块 1)drf给我们提供了多种解析数据包方式的解析类 form-data/urlencoded/json 2)我们可以通过配置来控制前台提交的哪些格式的数据后台在解析,哪些 ...
- 解析PHP多种序列化与反序列化的方法
1. serialize和unserialize函数这两个是序列化和反序列化PHP中数据的常用函数. 复制代码 代码如下: <?php$a = array('a'=> 'Apple' ,' ...
随机推荐
- 有哪些浏览器还支持flash?
Flash是大名鼎鼎的全家桶公司Adobe设计的一款网页动画软件,早期的动态网页基本都是基于Flash开发的.但是后来不断爆出关于Flash的安全漏洞和运行效率问题,虽然Adobe公司一直在尝试解决, ...
- git 报错 gitThere is no tracking information for the current branch. Please specify which branch you w
新建本地分支后将本地分支推送到远程库, 使用git pull 或者 git push 的时候报错gitThere is no tracking information for the current ...
- 2017第二届广东省强网杯线上赛:WEB phone number (SQL注入)
目录 解题思路 总结 解题思路 拿到题目的时候,只有一个登录界面 拿到登录界面,而且还伴随着有注册界面,联想到SQL的二次注入漏洞 尝试注册admin'#,并使用admin登录,发现登录失败,说明可能 ...
- Spring Boot引入Swagger并对界面进行美化
Swagger是一个接口文档生成工具,在前后端分离的开发中经常会用到,下面就来介绍下Swagger的使用: 引入依赖 <dependency> <groupId>io.spri ...
- SpringBoot入门02-配置类
引入 Spring Boot的底层已经有了Spring MVC Spring Boot习惯优先的思想,很多配置都是可省的 不需要配置web.xml文件 不需要服务层的xml配置 不需要dao层的xml ...
- find+xargs+sed批量替换
写代码时经常遇到要把 .c 和 .h的文件中的某些内容全部替换的情况,用sourceinsight 进行全局的查找是一个方法,但是sourceinsight只能替换一个文件中的字符串,不能同时替换多 ...
- easyDialog 简单、实用的弹出层组件
easyDialog 简单.实用的弹出层组件 使用背景 在完成导师需求时,导师要求寻找比一个layer弹出层组件体积小得多的.最好能嵌入在进HTML代码中而非src引用的弹出层组件,在这个需求下,我找 ...
- 3.2 Dependencies of the Projects in the Solution 解决方案中项目间的依赖项
3.2 Dependencies of the Projects in the Solution 解决方案中项目间的依赖项 The diagram below shows the essential ...
- 远程设备管理opendx平台搭建-appium和adb的安装
多年不见了,说起来也有3年了我又开始写博客了,这几年我还是没啥长进,还是干测试,但是测试行业的话,我已经成了一个测开了,也在搭建自己的测试网站 本系列文章讲述的是一个系列的第一部分,最终可以搭建一整套 ...
- 如何快速体验鸿蒙全新声明式UI框架ArkUI?
HDC2021将于10月22日在东莞松山湖正式开幕,大会将设立Codelab体验专区,超多好玩.有趣的Demo等你体验.想快速入门HarmonyOS?学习HarmonyOS新特性?以下几个Codela ...