JSON 之FastJson解析

1、Fastjson API入口類是com.alibaba.fastjson.JSON,經常使用的序列化操做均可以在JSON類上的靜態方法直接完成。html

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。java

2、FastJson解析JSON步驟
   A、服務器端將數據轉換成json字符串json

     首先、服務器端項目要導入阿里巴巴的fastjson的jar包至builtPath路徑下(這些能夠到fastjson官網下載:http://code.alibabatech.com/wiki/display/FastJSON/Home-zh服務器

JSON <wbr>之FastJson解析而後將數據轉爲json字符串,核心函數是:
public static String createJsonString(Object value)
   {
      String alibabaJson = JSON.toJSONString(value);
      return alibabaJson;
   }
B、客戶端將json字符串轉換爲相應的javaBean
 首先客戶端也要導入fastjson的兩個jar包
一、客戶端獲取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;
   }
}

二、使用泛型獲取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;
   }
函數

相關文章
相關標籤/搜索