生成和解析JSON数据格式的包有很多种:Gson、json-smart、FastJson、jackjson等,FastJson是一个阿里巴巴的大神开发的开源的Json处理工具包,包括“序列化”和“反序列化”两部分,号称最快。但是我认为没有最快,只有更快,只要这个功能满足我的需求,速度不错就行了,这就是我选择工具的基本标准(不是特别追求性能...)。
FastJson功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)。
下面简单说一下FastJson在OOP中的基本使用(非常简单),以下静态方法都是常用的序列化操作,可以用JSON类名直接调用:
1
2
3
4
5
6
7
8
|
public
static
final
Object parse(String text);
// 把JSON文本parse为JSONObject或者JSONArray
JSONObject parSEObject(String text);
// 把JSON文本parse成JSONObject
T parSEObject(String text,Class clazz);
// 把JSON文本parse为JavaBean
JSONArray parseArray(String text);
// 把JSON文本parse成JSONArray
List parseArray(String text,133)!important; background:none!important">//把JSON文本parse成JavaBean集合
String toJSONString(Object object);
// 将JavaBean序列化为JSON文本
String toJSONString(Object object,
boolean
prettyFormat);
// 将JavaBean序列化为带格式的JSON文本
Object toJSON(Object javaObject);
//将JavaBean转换为JSONObject或者JSONArray。
|
服务器端从数据库中获取到JavaBean(JAVA中的简单java类,比如Person等)或者JavaBean的集合,用 JSON.toJSONString()将其转成JSON数据格式并传给客户端,客户端的解析就是用到上述的parSEObject()方法,第一个参数是对象,第二个参数是JavaBean.class,而集合需要用到parseArray()方法,下面是一个工具类,对这些方法进行了封装,可以直接引用:
?
import
java.util.ArrayList;
java.util.List;
java.util.Map;
com.alibaba.fastjson.JSON;
com.alibaba.fastjson.TypeReference;
class
FastJsonTools {
/**
* 用fastjson 将json字符串解析为一个 JavaBean
*
* @param jsonString
* @param cls
* @return
*/
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
*/
<T> List<T> getBeans(String jsonString,Class<T> cls) {
List<T> list =
new
ArrayList<T>();
{
list = JSON.parseArray(jsonString,cls);
(Exception e) {
// TODO: handle exception
}
list;
}
/**
* 用fastjson 将jsonString 解析成 List<Map<String,Object>>
*
* @param jsonString
* @return
*/
List<Map<String,Object>> getListMap(String jsonString) {
List<Map<String,Object>> list =
ArrayList<Map<String,Object>>();
{
// 两种写法
// list = JSON.parSEObject(jsonString,new
// TypeReference<List<Map<String,Object>>>(){}.getType());
list = JSON.parSEObject(jsonString,
TypeReference<List<Map<String,Object>>>() {
});
(Exception e) {
// TODO: handle exception
}
list;
}
}
|