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

感谢博主的无私分享!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值