分享

FastJson生成和解析JSON数据

 人人驿站 2015-05-10

    生成和解析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. public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray   
  2. public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject      
  3. public static final  T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean   
  4. public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray   
  5. public static final  List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合   
  6. public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本   
  7. public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本   
  8. public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。  

     服务器端从数据库中获取到JavaBean(JAVA中的简单java类,比如Person等)或者JavaBean的集合,用 JSON.toJSONString()将其转成JSON数据格式并传给客户端,客户端的解析就是用到上述的parseObject()方法,第一个参数是对象,第二个参数是JavaBean.class,而集合需要用到parseArray()方法,下面是一个工具类,对这些方法进行了封装,可以直接引用:

  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3. import java.util.Map;  
  4.   
  5. import com.alibaba.fastjson.JSON;  
  6. import com.alibaba.fastjson.TypeReference;  
  7.   
  8. public class FastJsonTools {  
  9.   
  10.   /** 
  11.    * 用fastjson 将json字符串解析为一个 JavaBean 
  12.    *  
  13.    * @param jsonString 
  14.    * @param cls 
  15.    * @return 
  16.    */  
  17.   public static <T> T getBean(String jsonString, Class<T> cls) {  
  18.     T t = null;  
  19.     try {  
  20.       t = JSON.parseObject(jsonString, cls);  
  21.     } catch (Exception e) {  
  22.       // TODO: handle exception  
  23.       e.printStackTrace();  
  24.     }  
  25.     return t;  
  26.   }  
  27.   
  28.   /** 
  29.    * 用fastjson 将json字符串 解析成为一个 List<JavaBean> 及 List<String> 
  30.    *  
  31.    * @param jsonString 
  32.    * @param cls 
  33.    * @return 
  34.    */  
  35.   public static <T> List<T> getBeans(String jsonString, Class<T> cls) {  
  36.     List<T> list = new ArrayList<T>();  
  37.     try {  
  38.       list = JSON.parseArray(jsonString, cls);  
  39.     } catch (Exception e) {  
  40.       // TODO: handle exception  
  41.     }  
  42.     return list;  
  43.   }  
  44.   
  45.   /** 
  46.    * 用fastjson 将jsonString 解析成 List<Map<String,Object>> 
  47.    *  
  48.    * @param jsonString 
  49.    * @return 
  50.    */  
  51.   public static List<Map<String, Object>> getListMap(String jsonString) {  
  52.     List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  53.     try {  
  54.       // 两种写法  
  55.       // list = JSON.parseObject(jsonString, new  
  56.       // TypeReference<List<Map<String, Object>>>(){}.getType());  
  57.   
  58.       list = JSON.parseObject(jsonString,  
  59.           new TypeReference<List<Map<String, Object>>>() {  
  60.           });  
  61.     } catch (Exception e) {  
  62.       // TODO: handle exception  
  63.     }  
  64.     return list;  
  65.   
  66.   }  
  67.   
  68. }  

jar包下载地址:http://search./#search%7Cgav%7C1%7Cg%3A%22com.alibaba%22%20AND%20a%3A%22fastjson%22

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多