一、环境准备:使用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. Linux系列(29) - rpm包命名规则(1)

    RPM包命名规则 例如包名:httpd-2.2.15-15.el6.centsos.1.i686.rpm 软件包名-httpd 软件版本-2.2.15 发布的次数-15 el6.centos适合的Li ...

  2. 使用正则表达式在VS中批量移除 try-catch

    使用正则表达式在VS中批量移除 try-catch 前言 try-catch 意为捕获错误,一般在可能出错的地方使用(如调用外部函数或外部设备),以对错误进行正确的处理,并进行后续操作而不至于程序直接 ...

  3. windows下如何查看所有端口及占用

    1.在windows下查看所有端口: 先点击电脑左下角的开始,然后选择运行选项,接着我们在弹出的窗口中,输入[cmd]命令,进行命令提示符. 然后我们在窗口中输入[netstat -ano]按下回车, ...

  4. node.js及npm安装&配置

    之前我们在文言文安装教程里写过node.js及npm的安装,这里我们详细写一下. 下载node.js node.js下载分为两种,官网nodejs.org,和国内官网nodejs.cn,国内的童鞋建议 ...

  5. HTML(思维导图)

  6. 聊聊我对 GraphQL 的一些认知

    每隔一段时间就能看到一篇 GraphQL 的文章,但是打开文章一看,基本上就是简单的介绍下 GraphQL 的特性.很多文章其实就是 github 上找个 GraphQL 的项目,然后按照对应的 de ...

  7. CefSharp基于.Net Framework 4.0 框架编译

    CefSharp基于.Net Framework 4.0 框架编译 本次源码使用的是Github上CefSharp官方的79版本源码 准备 IDE Visual Studio 2017 Enterpr ...

  8. 第30篇-main()方法的执行

    在第7篇详细介绍过为Java方法创建的栈帧,如下图所示. 调用完generate_fixed_frame()函数后一些寄存器中保存的值如下: rbx:Method* ecx:invocation co ...

  9. luogu1438无聊的数列(区间加等差数列,求一个数的和)

    QAQ一道线段树好题 题目大意: 给定一个有n个数的数列,共m种操作,有两种操作 \(1\ l\ r\ k\ d\)表示将\(a[l]\)~\(a[r]\)的数加一个以k为首相,d为公差 \(2\ x ...

  10. Python中is与==区别

    1.在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存中,那么这个空间是有一个唯一标识的, ...