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' ,' ...
随机推荐
- 安装配置环境 CUDA以及CUDNN tensorflow pytorch pip安装 虚拟环境
1. 在win10中利用Anaconda直接安装tensorflow-gpu 不需要另行安装cuda cudnn 但是不知道电脑会自动适配所需的版本吗,不过把电脑显卡驱动更新一下,就都也可以了吧. ...
- 腾讯云启动jenkins
首先配置后jdk环境 可参考:https://www.cnblogs.com/Uni-Hoang/p/12991686.html 下载jenkins的war包 在/usr/local/创建一个jenk ...
- django 自定义auth中user登陆认证以及自写认证
第一种: 重写自定义auth中user登陆认证模块, 引入MobelBackend from django.contrib.auth.backends import ModelBackend 重写验证 ...
- [转载]使用postgresql安装wordpress
1. 环境安装sudo apt-get install apache2sudo apt-get install postgresql-9.1sudo apt-get install php5sudo ...
- 2020牛客NOIP赛前集训营-提高组(第三场)C-牛半仙的妹子Tree【虚树,最短路】
正题 题目链接:https://ac.nowcoder.com/acm/contest/7609/C 题目大意 给出\(n\)个点的一棵树,\(m\)个时刻各有一个操作 标记一个点,每个点被标记后的每 ...
- 关于mysql基础
早就想把自己的数据库基础巩固一下,然而一直没有时间,今天终于抽出时间对mysql数据库基础进行了学习与扩展. mysql与其他数据库的区别 Sqlite: 开源免费,体积小,单文件,没有进程.磁盘读性 ...
- c++ 的学习 构造函数1
1. 构造函数(也叫构造器),在对象创建的时候自动调用,一般用于完成对象的初始化工作 2.一旦自定义了构造函数,必须用其中一个自定义的构造函数来初始化对象 就是有多个的话 根据参数编译器自行选 ...
- NOIP 模拟二 考试总结
SDOI2015 排序 今天看到这道题,没有一点思路,暴力都没的打...还是理解错题意了,操作不同位置不是说改不同的区间,而是不同操作的顺序...考场上如果知道这个的话最少暴力拿一半啊,因为正解本来就 ...
- 重新整理 .net core 周边阅读篇————AspNetCoreRateLimit 之规则[二]
前言 本文和上文息息相关. https://www.cnblogs.com/aoximin/p/15315102.html 是紧接着上文invoke来书写的,那么现在来逐行分析invoke到底干了啥. ...
- 在昨天夜黑风高的晚上,我偷了隔壁老王的Python入门课件,由浅入深堪称完美!
隔壁老王是一个资深码农,就业教育事业的秃顶之才昨天我下楼打酱油,看他迎面走来,满目春光我好奇的问道:老王,有什么好事,隔壁小花叫你上门了吗?老王:秘密!!我心想:哎呦~不错啊半晚之时,连猫狗都睡着了, ...