Fastjson 序列化与反序列化
JSON这个类是fastjson API的入口,主要的功能都通过这个类提供。
序列化API
- // 将Java对象序列化为JSON字符串,支持各种各种Java基本类型和JavaBean
- public static String toJSONString(Object object, SerializerFeature... features);
- // 将Java对象序列化为JSON字符串,返回JSON字符串的utf-8 bytes
- public static byte[] toJSONBytes(Object object, SerializerFeature... features);
- // 将Java对象序列化为JSON字符串,写入到Writer中
- public static void writeJSONString(Writer writer,
- Object object,
- SerializerFeature... features);
- // 将Java对象序列化为JSON字符串,按UTF-8编码写入到OutputStream中
- public static final int writeJSONString(OutputStream os,
- Object object,
- SerializerFeature... features);
JSON字符串反序列化API
- // 将JSON字符串反序列化为JavaBean
- public static <T> T parseObject(String jsonStr,
- Class<T> clazz,
- Feature... features);
- // 将JSON字符串反序列化为JavaBean
- public static <T> T parseObject(byte[] jsonBytes, // UTF-8格式的JSON字符串
- Class<T> clazz,
- Feature... features);
- // 将JSON字符串反序列化为泛型类型的JavaBean
- public static <T> T parseObject(String text,
- TypeReference<T> type,
- Feature... features);
- // 将JSON字符串反序列为JSONObject
- public static JSONObject parseObject(String text);
Demo
- String jsonStr = "{ " +
- " \"animals\": { " +
- " \"dog\": [{ " +
- " \"name\": \"Rufus\", " +
- " \"breed\": \"labrador\" " +
- " }, " +
- " { " +
- " \"name\": \"Marty\", " +
- " \"breed\": \"whippet\" " +
- " } " +
- " ], " +
- " \"cat\": { " +
- " \"name\": \"Matilda\" " +
- " } " +
- " } " +
- "}";
parse Tree
- //parse Tree
- JSONObject jsonObj = JSON.parseObject(jsonStr);
- System.out.println("jsonObj:" + jsonObj);//{"animals":{"cat":{"name":"Matilda"},"dog":[{"name":"Rufus","breed":"labrador"},{"name":"Marty","breed":"whippet"}]}}
- JSONObject animals = jsonObj.getJSONObject("animals");
- System.out.println("animals:" + animals);//{"cat":{"name":"Matilda"},"dog":[{"name":"Rufus","breed":"labrador"},{"name":"Marty",","breed":"whippet"}]}
- JSONArray dogArr = animals.getJSONArray("dog");
- System.out.println("dogArr:" + dogArr);//[{"name":"Rufus","breed":"labrador"},{"name":"Marty","breed":"whippet"}]
- JSONObject dog0 = dogArr.getJSONObject(0);
- System.out.println("dog0:" + dog0);//{"name":"Rufus","breed":"labrador"}
- String dog0name = dog0.getString("name");
- System.out.println("dog0name:" + dog0name);//Rufus
parse POJO
- //parse POJO
- JsonRootBean model = JSON.parseObject(jsonStr, JsonRootBean.class);
- System.out.println("model:" + model);//JsonRootBean{animals=Animals{dog=[Dog{name='Rufus', breed='labrador'}, Dog{name='Marty', breed='whippet'}], cat=Cat{name='Matilda'}}}
parse POJO Generic
- //parse POJO List对象
- Type type = new TypeReference<List<Dog>>() {}.getType();
- // List<Dog> list = JSON.parseObject(dogArr.toString(), type);
- List<Dog> list = JSON.parseArray(dogArr.toString(), Dog.class);
- System.out.println("list:" + list);//[Dog{name='Rufus', breed='labrador'}, Dog{name='Marty', breed='whippet'}]
convert POJO to json string
- //convert POJO to json string
- String modelStr = JSON.toJSONString(model);
- System.out.println("modelStr:" + modelStr);//{"animals":{"cat":{"name":"Matilda"},"dog":[{"breed":"labrador","name":"Rufus"},{"breed":"whippet","name":"Marty"}]}}
convert POJO to json bytes
- //convert POJO to json bytes
- byte[] modelBytes = JSON.toJSONBytes(model);
- System.out.println("modelBytes:" + modelBytes.length);//
参考文章:
https://www.w3cschool.cn/fastjson/fastjson-api.html
Fastjson 序列化与反序列化的更多相关文章
- FastJson 序列化与反序列化一些说明
最近所属的组需要对接一些征信结构,就涉及到很多中的数据格式,而springmvc中使用的是jackson作为@ResponseBody的依赖jar 但是个人认为fastkson的性能要高于jackso ...
- fastjson序列化和反序列化报com.alibaba.fastjson.JSONException: autoType is not support异常问题,解决方案整合
1.问题起因 2017年3月15日,fastjson官方发布安全升级公告,该公告介绍fastjson在1.2.24及之前的版本存在代码执行漏洞,当恶意攻击者提交一个精心构造的序列化数据到服务端时,由于 ...
- Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)
背景 记录项目中遇到的 关于fastjson jsonobject转string乱序,string转jsonObject乱序问题的解决方案 fastJson issues 问题来源描述参见: http ...
- fastjson 序列化,反序列化Map对象的顺序问题
使用JSONObject 读取JSON字符串时,读取出来的数据,通过变量时是无序的. 但是业务希望返回是顺序的. String str="{name:\"A\",add ...
- Android 中的Json解析工具fastjson 、序列化、反序列化
Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备 ...
- FastJson实现复杂对象序列化与反序列化
原文:http://blog.csdn.net/xqhadoop/article/details/62217954 一.认识FastJson 1.优势 fastjson是目前java语言中最快的jso ...
- 自定义fastjson对枚举类型的序列化及反序列化过程
通常,fastjson在序列化及反序列化枚举时,一般以下几种策略: 1).根据枚举的name值序列化及反序列化(默认) 2).根据枚举的ordinal序列化及反序列化 3).根据枚举的toString ...
- 第一章 JacksonUtil 序列化与反序列化属性总结
1.json-lib与Jackson 关于json-lib与Jackson对比总结如下: 1).性能方面,Jackson的处理能力高出Json-lib10倍左右. 2).json-lib已经停止更新, ...
- springboot学习(三)————使用HttpMessageConverter进行http序列化和反序列化
以下内容,如有问题,烦请指出,谢谢! 对象的序列化/反序列化大家应该都比较熟悉:序列化就是将object转化为可以传输的二进制,反序列化就是将二进制转化为程序内部的对象.序列化/反序列化主要体现在程序 ...
随机推荐
- ER图的构建
我们在完成一个项目前期,首要的工作是对需求进行分析,然后根据需求画出相应的数据库E-R图,这是我们后期建立数据库和对数据库进行操作的必要操作 这是一个小总结和示例 关系型数据库 关系 (表) stud ...
- python的优缺点。
Python的定位是“优雅”.“明确”.“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序. 开发效率非常高,Pyt ...
- mysql模糊查询多个字段
SELECT * FROM nst_t_conferencehis WHERE ConferName REGEXP '军工|军资';
- .net大文件分块上传断点续传demo
IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务 ...
- am335x system upgrade kernel gpio(九)
1 Hardware Overview gpio interface,pin map: AM335X_I2C0_W_C----------------------MCASP0_AXR1 /* ...
- Codevs 1482 路线统计(矩阵乘法)
1482 路线统计 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description N个节点的有向图, 求从start到finish刚好经过时 ...
- Firefox修復QQ快速登錄
中了一次毒,然後火狐裏面就不能用QQ的快捷登錄了,後找到修復方法: 將QQ的四個文件放入火狐的插件文件夾裏面即可. 1.QQ文件目錄: C:\Program Files (x86)\Tencent\Q ...
- 一次 react-router 中遇到的小坑
react-router Link 标签不生效的问题 废话不多说, 直接上问题, 排解过程和答案 现象: 发现 使用 Link 标签没有 元素的样式和效果, 也不能进行跳转 代码如下: render( ...
- Codeforces Round #383 D
传送门 Description Arpa has a rooted tree (connected acyclic graph) consisting of n vertices. The verti ...
- POJ1635 Subway tree systems ——(判断树的同构,树的最小表示法)
给两棵有根树,判断是否同构.因为同构的树的最小表示法唯一,那么用最小表示法表示这两棵树,即可判断同构.顺便如果是无根树的话可以通过选出重心以后套用之前的方法. AC代码如下: #include < ...