日期:2014-05-16  浏览次数:20429 次

高效的JSON转换工具

?

?

?????? 在网上搜索了一番发现用json-lib进行json格式转换的还真不少,但是经过测试性能不太令人满意,同类工具中还有个后起

之秀那就是jackson,单从性能上说要比json-lib好很多,于是在项目中就决定用jackson了。
???? 但是关于jackson的资料在网上相比不是很多,于是到了官方网站看了看,把源码下载下来。帮助文档做的不太好,也没有

个现成的例子供参考。不过还好,最后在官方网(http://jackson.codehaus.org/)站的某个角落里找到了一些例子,?我在原来例子的基础上稍加改动封装了一个工具,供网友们参考,有不当之处还望拍砖指正。

????? 为性能考虑尽量少的向客户端发送数据,所以在Bean到JSON转换的时候把不需要的字段过滤掉,要完成这个功能我们必须自定义一个实现StdSerializerProvider接口的序列化器BzStdSerializerProvider,然后把这个序列化器赋给ObjectMapper即可,下面就把整个具体实现贴出来:

view plaincopy to clipboardprint?

  1. package?com.bzlccn.oa.common.json.jackson;??
  2. import?java.io.IOException;??
  3. import?java.util.HashMap;??
  4. import?java.util.List;??
  5. import?java.util.Vector;??
  6. import?org.codehaus.jackson.JsonGenerator;??
  7. import?org.codehaus.jackson.JsonParseException;??
  8. import?org.codehaus.jackson.map.JsonMappingException;??
  9. import?org.codehaus.jackson.map.ObjectMapper;??
  10. import?org.codehaus.jackson.map.SerializationConfig;??
  11. import?org.codehaus.jackson.map.SerializerFactory;??
  12. import?org.codehaus.jackson.map.SerializerProvider;??
  13. import?org.codehaus.jackson.map.introspect.BasicBeanDescription;??
  14. import?org.codehaus.jackson.map.ser.BeanPropertyWriter;??
  15. import?org.codehaus.jackson.map.ser.BeanSerializer;??
  16. import?org.codehaus.jackson.map.ser.CustomSerializerFactory;??
  17. import?org.codehaus.jackson.map.ser.StdSerializerProvider;??
  18. /**?
  19. ?*?json处理工具集?
  20. ?*??
  21. ?*?@author?rain?
  22. ?*??
  23. ?*/??
  24. public?class?CustomSerialization?{??
  25. ????private?static?final?ObjectMapper?mapper?=?new?ObjectMapper();??
  26. ????static?class?FilteredWriter?extends?BeanPropertyWriter?{??
  27. ????????public?FilteredWriter(BeanPropertyWriter?w)?{??
  28. ????????????super(w);??
  29. ????????}??
  30. ????????public?void?serializeAsField(Object?bean,?JsonGenerator?jgen,??
  31. ????????????????SerializerProvider?prov)?