博客
关于我
FastJson解析工具解析Json
阅读量:576 次
发布时间:2019-03-11

本文共 3076 字,大约阅读时间需要 10 分钟。

阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:

速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;
功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)

Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    public static final  T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final  List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject);// 将JavaBean转换为JSONObject或者JSONArray。

解析工具类

package com.xxx.util;import java.util.ArrayList;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.TypeReference;/** * @author YLBF *  * @category 类说明 fastjson工具类 */public class FastJsonTools {       /**     * 用fastjson 将json字符串解析为一个 JavaBean     *      * @param jsonString     * @param cls     * @return     */    public static 
T getBean(String jsonString, Class
cls) { T t = null; try { t = JSON.parseObject(jsonString, cls); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return t; } /** * 用fastjson 将json字符串 解析成为一个 List
及 List
* * @param jsonString * @param cls * @return */ public static
List
getBeans(String jsonString, Class
cls) { List
list = new ArrayList
(); try { list = JSON.parseArray(jsonString, cls); } catch (Exception e) { // TODO: handle exception } return list; } /** * 用fastjson 将jsonString 解析成 List
> * * @param jsonString * @return */ public static List
> getListMap(String jsonString) { List
> list = new ArrayList
>(); try { // 两种写法 // list = JSON.parseObject(jsonString, new // TypeReference
>>(){}.getType()); list = JSON.parseObject(jsonString, new TypeReference
>>() { }); } catch (Exception e) { // TODO: handle exception } return list; }}

根据服务器返回的Json字符串建立JavaBean(实体类),然后利用JavaBean(实体类)就可以解析进行Json解析了

注意代码混淆的时候不要混淆实体类,因为客户端代码中的JavaBean(实体类)的字段名称必须与服务端返回json字符串中的key要一致,才能进行解析,而混淆编译之后,客户端代码中的JavaBean(实体类)的类名与其字段名称全部变成了a、b、c、d等等字符串,这与服务端返回的json字符串中的key不一致,导致解析失败。

下面是混淆代码 我这里使用的版本是fastjson-1.2.5.jar

##---------------Begin: proguard configuration for fastjson-1.2.5  -----------libraryjars libs/fastjson-1.2.5.jar-dontwarn com.alibaba.fastjson.**-keep class com.alibaba.fastjson.** { *; }-keep class com.xxx.bean.** { *; }-keep class com.alibaba.fastjson.*.*##---------------End: proguard configuration for fastjson-1.2.5  ----------

fastjson源码 详细内容见README.md 截止发表前最新版本是1.2.6

转载地址:http://wiivz.baihongyu.com/

你可能感兴趣的文章
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询数据库所有表的字段信息
查看>>
【Java基础】什么是面向对象?
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>
mysql 添加索引
查看>>