Android開發之FastJson概述與簡單使用

gao_chun發表於2014-09-12

Android開發之FastJson概述與簡單使用


在Android開發中,我們Android客戶端如果要和伺服器端互動,一般都會採用json資料格式進行互動,FastJson是阿里巴巴工程師開發的一個Json處理工具包,包括“序列化”和“反序列化”兩部分,Fastjson是一個Java語言編寫的高效能功能完善的JSON庫。

一個JSON庫涉及的最基本功能就是 序列化 和 反序列化 

Fastjson支援java bean的直接序列化。你可以使用 com.alibaba.fastjson.JSON 這個類進行序列化和反序列化。

fastjson採用獨創的演算法,將parse的速度提升到極致,超過所有json庫。



特點:

FastJson速度最快,fastjson具有極快的效能,超越任其他的Java Json parser。

FastJson功能強大,完全支援Java Bean、集合、Map、日期、Enum,支援範型,支援自省;無依賴。

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

使用Fastjson首先在官網下載,然後應用到自己的專案中,GitHub連結:https://github.com/alibaba/fastjson

FastJson 1.2.6直接下載:https://github.com/alibaba/fastjson/archive/1.2.6.zip


1.概述一下Fastjson中的經常呼叫的方法

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


2.簡單的使用Fastjson

1)伺服器端 使用 Fastjson 將資料轉換成json字串,主要使用的函式如下:

public static String createJsonString(Object value) { 

	String alibabaJson = JSON.toJSONString(value);//此處轉換 

	return alibabaJson; 
}

伺服器端呼叫此函式執行轉換即可,此處不再贅述。


2)客戶端 將從伺服器端獲取到的json字串 轉換為相應的javaBean,下面獲取Json資料的函式例子,供參考:

//獲取Json資料
public static String getJsonContent(String urlStr) { 

        try {
			// 獲取HttpURLConnection連線物件 
            URL url = new URL(urlStr); 
            HttpURLConnection httpConn = (HttpURLConnection) url.openConnection(); 

            // 設定連線屬性 
            httpConn.setConnectTimeout(3000); 
            httpConn.setDoInput(true); 
            httpConn.setRequestMethod("GET"); 

            // 獲取相應碼 200表示請求success
            int respCode = httpConn.getResponseCode(); 

            if (respCode == 200){
				//轉換並返回
                return convertStream2Json(httpConn.getInputStream()); 
            } 
         }catch (MalformedURLException e){
            e.printStackTrace(); 

			}catch (IOException e){ 

				e.printStackTrace(); 
         } 

        return null; 
    } 



private static String convertStream2Json(InputStream inputStream) { 

        String jsonStr = ""; 
         // ByteArrayOutputStream相當於記憶體輸出流 
        ByteArrayOutputStream out = new ByteArrayOutputStream(); 
        byte[] buffer = new byte[1024]; 
        int len = 0; 
        // 將輸入流轉移到記憶體輸出流中 
         while ((len = inputStream.read(buffer, 0, buffer.length)) != -1){

                out.write(buffer, 0, len); 
          } 
         // 將記憶體流轉換為字串 
         jsonStr = new String(out.toByteArray()); 

        return jsonStr; 
    }


3)使用泛型獲取javaBean,也可像上述所說,Fastjson API入口類是 com.alibaba.fastjson.JSON ,常用的序列化操作都可以直接在呼叫JSON類上的靜態方法完成,下面再次封裝了一下。

public static T parse2Bean(String jsonString, Class cls) {

       T t = null;

	   //呼叫JSON類中的方法,parse為Bean物件
       t = JSON.parseObject(jsonString, cls); 

       return t; 
   } 


轉載註明出處:http://blog.csdn.net/gao_chun/article/details/39232097

相關文章