阿里巴巴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> T getBean(String jsonString, Class<T> cls) {
T t = null;
try {
t = JSON.parseObject(jsonString, cls);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return t;
}
/**
* 用fastjson 将json字符串 解析成为一个 List<JavaBean> 及 List<String>
*
* @param jsonString
* @param cls
* @return
*/
public static <T> List<T> getBeans(String jsonString, Class<T> cls) {
List<T> list = new ArrayList<T>();
try {
list = JSON.parseArray(jsonString, cls);
} catch (Exception e) {
// TODO: handle exception
}
return list;
}
/**
* 用fastjson 将jsonString 解析成 List<Map<String,Object>>
*
* @param jsonString
* @return
*/
public static List<Map<String, Object>> getListMap(String jsonString) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
// 两种写法
// list = JSON.parseObject(jsonString, new
// TypeReference<List<Map<String, Object>>>(){}.getType());
list = JSON.parseObject(jsonString,
new TypeReference<List<Map<String, Object>>>() {
});
} 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源码 GitHub下载地址详细内容见README.md 截止发表前最新版本是1.2.6
2万+



被折叠的 条评论
为什么被折叠?



