一、环境准备:使用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 解析、序列化及反序列化的更多相关文章

  1. Android 中的Json解析工具fastjson 、序列化、反序列化

    Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备 ...

  2. 自定义fastjson对枚举类型的序列化及反序列化过程

    通常,fastjson在序列化及反序列化枚举时,一般以下几种策略: 1).根据枚举的name值序列化及反序列化(默认) 2).根据枚举的ordinal序列化及反序列化 3).根据枚举的toString ...

  3. java分享第十三天(fastjson生成和解析json数据,序列化和反序列化数据)

     fastjson简介:Fastjson是一个Java语言编写的高性能功能完善的JSON库.fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jack ...

  4. fastjson生成和解析json数据,序列化和反序列化数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  5. 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)

    在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...

  6. Windowsphone 之xml序列化和反序列化的应用(WebService解析返回的数据DataSet )

    关于Xml的序列化和反序列化: 可以看这篇文章,http://www.cnblogs.com/Windows-phone/p/3243575.html WebService解析返回的数据DataSet ...

  7. FastJson实现复杂对象序列化与反序列化

    原文:http://blog.csdn.net/xqhadoop/article/details/62217954 一.认识FastJson 1.优势 fastjson是目前java语言中最快的jso ...

  8. DRF框架(二)——解析模块(parsers)、异常模块(exception_handler)、响应模块(Response)、三大序列化组件介绍、Serializer组件(序列化与反序列化使用)

    解析模块 为什么要配置解析模块 1)drf给我们提供了多种解析数据包方式的解析类 form-data/urlencoded/json 2)我们可以通过配置来控制前台提交的哪些格式的数据后台在解析,哪些 ...

  9. 解析PHP多种序列化与反序列化的方法

    1. serialize和unserialize函数这两个是序列化和反序列化PHP中数据的常用函数. 复制代码 代码如下: <?php$a = array('a'=> 'Apple' ,' ...

随机推荐

  1. 自动化测试报告----allure2(一)

    以前都是使用TestNG自带的报告.jenkins中的报告等但没有个性化装饰报告,然而接触过allure2后发现原来报告还可以这么酷,接下来就带大家一起看一下allure2 报告炫在哪里? 我们先看如 ...

  2. 分析 ajax 请求并抓取 “今日头条的街拍图”

    今日头条抓取页面: 分析街拍页面的 ajax 请求: 通过在 XHR 中查看内容,获取 url 链接,params 参数信息,将两者进行拼接后取得完整 url 地址.data 中的 article_u ...

  3. 双击tomcat8w.exe出现指定的服务未安装

    进入tomcat bin 目录下 打开cmd 输入命令 service.bat install   进行服务安装. 双击tomcat8w.exe 就可以打开了.

  4. B站1024程序员节部分答案

    1.页面的背后是什么? 直接撸页面源码就行啦 2.真正的秘密只有特殊的设备才能看到 修改UA为页面上提示的"bilibili Security Browser" 3.密码是啥? 弱 ...

  5. cmd下载慢

    是网络的原因,加一个镜像服务器 pip install *** -i https://pypi.tuna.tsinghua.edu.cn/simple

  6. 基于注解实现jackson动态JsonProperty

    基于注解实现jackson动态JsonProperty @JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,但是值是固定的 ...

  7. Azure Tips 第一期: Azure 中的安全监视工具,数据存储, 动态数据屏蔽以及资源部署

    # 1 Azure 中的安全监视工具 微软 Azure 云提供以下监控工具,可用于观察操作和检测异常行为. Azure 安全中心 Azure 安全中心是一个统一的基础结构安全管理系统,可以增强数据中心 ...

  8. 题解 CF1119H Tripe题解

    题目传送门 题目大意 给出\(n,t,x,y,z\),值域\(\le 2^t\),给出\(n\)个三元组\((a_i,b_i,c_i)\),表示有\(x\)个\(a_i\),\(y\)个\(b_i\) ...

  9. 听说,99% 的 Go 程序员都被 defer 坑过

    原文链接: 听说,99% 的 Go 程序员都被 defer 坑过 先声明:我被坑过. 之前写 Go 专栏时,写过一篇文章:Go 专栏|错误处理:defer,panic 和 recover.有小伙伴留言 ...

  10. MyBatis 中实现SQL语句中in的操作 (11)

    MyBatis 中实现SQL语句中in的操作 概括:应用myBatis实现SQL查询中IN的操作 1.数据库结构及其数据 2.mapper.xml文件 <?xml version="1 ...