一、阿里巴巴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。
二、FastJson解析JSON步驟
A、服務器端將數據轉換成json字符串 首先、服務器端項目要導入阿里巴巴的fastjson的jar包至builtPath路徑下(這些可以到fastjson官網下載:http://code.alibabatech.com/wiki/display/FastJSON/Home-zh)

然后將數據轉為json字符串,核心函數是:
public static String createJsonString(Object value) { String alibabaJson = JSON.toJSONString(value); return alibabaJson; }
B、客戶端將json字符串轉換為相應的javaBean
首先客戶端也要導入fastjson的兩個jar包
1、客戶端獲取json字符串
public class HttpUtil { 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"); // 獲取相應碼 int respCode = httpConn.getResponseCode(); if (respCode == 200) { return ConvertStream2Json(httpConn.getInputStream()); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; } private static String ConvertStream2Json(InputStream inputStream) { String jsonStr = ""; // ByteArrayOutputStream相當於內存輸出流 ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; // 將輸入流轉移到內存輸出流中 try { while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) { out.write(buffer, 0, len); } // 將內存流轉換為字符串 jsonStr = new String(out.toByteArray()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return jsonStr; } }
2、使用泛型獲取javaBean(核心函數)
public static T getPerson(String jsonString, Class cls) { T t = null; try { t = JSON.parseObject(jsonString, cls); } catch (Exception e) { // TODO: handle exception } return t; } public static List getPersons(String jsonString, Class cls) { List list = new ArrayList(); try { list = JSON.parseArray(jsonString, cls); } catch (Exception e) { } return list; } public static List> listKeyMaps(String jsonString) { List> list = new ArrayList>(); try { list = JSON.parseObject(jsonString, new TypeReference>>() { }); } catch (Exception e) { // TODO: handle exception } return list; } }