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' ,' ...
随机推荐
- Jenkins无法登陆解决方案
Jenkins-2.204.1 版本 创建jenkins用户时,没填full name,且选择了使用系统的admin登录或者是admin登录只是改了admin的登录密码导致登录不上去(Invalid ...
- P7405-[JOI 2021 Final]雪玉【二分】
正题 题目链接:https://www.luogu.com.cn/problem/P7405 题目大意 \(n\)个点在坐标轴上,\(q\)次每次所有点向一个方向移动若干步,每个点的权值是它第一次覆盖 ...
- IE浏览器设置兼容性
因为IE浏览器不兼容高版本的Jquery.Bootstrap等JS框架,导致页面在Google浏览器和在IE的显示完全不一样,所以需要对页面进行兼容性设置 <!--设置兼容性--> < ...
- NVIDIA驱动安装
在一次重启之后,NVIDIA显卡突然驱动坏了.实验室同学推测可能是有人安装了caffe,导致驱动被升级了.不论如何,需要重装驱动. 我的开发环境:Ubuntu 16.04 + GeForce GTX ...
- Jenkins持续集成与部署
一.Jenkins简介 在阅读此文章之前,你需要对Linux.Docker.Git有一定的了解和使用,如果还未学习,请阅读我前面发布的相关文章进行学习. 1.概念了解:CI/CD模型 CI全名Cont ...
- GoLang设计模式08 - 命令模式
命令模式是一种行为型模式.它建议将请求封装为一个独立的对象.在这个对象里包含请求相关的全部信息,因此可以将其独立执行. 在命令模式中有如下基础组件: Receiver:唯一包含业务逻辑的类,命令对象会 ...
- Java运行时异常与非运行时异常
Java运行时异常与非运行时异常 Exception(异常)是程序本身可以处理的异常.主要包含RuntimeException等运行时异常和IOException,SQLException等非运行时异 ...
- 洛谷2093 JZPFAR + KD-Tree学习笔记 (KD-Tree)
KD-Tree这玩意还真的是有趣啊.... (基本完全不理解) 只能谈一点自己的对KD-Tree的了解了. 首先这个玩意就是个暴力... 他的结构有点类似二叉搜索树 每一层都是以一个维度作为划分标准. ...
- 【UE4 C++ 基础知识】<7> 容器——TSet
概述 TSet是一种快速容器类,(通常)用于在排序不重要的情况下存储唯一元素. TSet 类似于 TMap 和 TMultiMap,但有一个重要区别:TSet 是通过对元素求值的可覆盖函数,使用数据值 ...
- .NET 事件总线,简化项目、类库、线程、服务等之间的通信,代码更少,质量更好。
Jaina .NET 事件总线,简化项目.类库.线程.服务等之间的通信,代码更少,质量更好. 安装 Package Manager Install-Package Jaina .NET CLI do ...