FastJson——生成和解析Json數據

生成和解析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  
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。

     服務器端從數據庫中獲取到JavaBean(JAVA中的簡單java類,比如Person等)或者JavaBean的集合,用 JSON.toJSONString()將其轉成JSON數據格式並傳給客戶端,客戶端的解析就是用到上述的parseObject()方法,第一個參數是對象,第二個參數是JavaBean.class,而集合需要用到parseArray()方法,下面是一個工具類,對這些方法進行了封裝,可以直接引用:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 
   
import com.alibaba.fastjson.JSON; 
import com.alibaba.fastjson.TypeReference; 
   
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; 
   
  
   
}

github項目地址:https://github.com/alibaba/fastjson

文章轉自:http://www.open-open.com/lib/view/open1417957184230.html

感謝博主的無私分享!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章