高效的JSON转换工具
?
?
?????? 在网上搜索了一番发现用json-lib进行json格式转换的还真不少,但是经过测试性能不太令人满意,同类工具中还有个后起
之秀那就是jackson,单从性能上说要比json-lib好很多,于是在项目中就决定用jackson了。
???? 但是关于jackson的资料在网上相比不是很多,于是到了官方网站看了看,把源码下载下来。帮助文档做的不太好,也没有
个现成的例子供参考。不过还好,最后在官方网(http://jackson.codehaus.org/)站的某个角落里找到了一些例子,?我在原来例子的基础上稍加改动封装了一个工具,供网友们参考,有不当之处还望拍砖指正。
????? 为性能考虑尽量少的向客户端发送数据,所以在Bean到JSON转换的时候把不需要的字段过滤掉,要完成这个功能我们必须自定义一个实现StdSerializerProvider接口的序列化器BzStdSerializerProvider,然后把这个序列化器赋给ObjectMapper即可,下面就把整个具体实现贴出来:
view plaincopy to clipboardprint?
-
package?com.bzlccn.oa.common.json.jackson;??
-
import?java.io.IOException;??
-
import?java.util.HashMap;??
-
import?java.util.List;??
-
import?java.util.Vector;??
-
import?org.codehaus.jackson.JsonGenerator;??
-
import?org.codehaus.jackson.JsonParseException;??
-
import?org.codehaus.jackson.map.JsonMappingException;??
-
import?org.codehaus.jackson.map.ObjectMapper;??
-
import?org.codehaus.jackson.map.SerializationConfig;??
-
import?org.codehaus.jackson.map.SerializerFactory;??
-
import?org.codehaus.jackson.map.SerializerProvider;??
-
import?org.codehaus.jackson.map.introspect.BasicBeanDescription;??
-
import?org.codehaus.jackson.map.ser.BeanPropertyWriter;??
-
import?org.codehaus.jackson.map.ser.BeanSerializer;??
-
import?org.codehaus.jackson.map.ser.CustomSerializerFactory;??
-
import?org.codehaus.jackson.map.ser.StdSerializerProvider;??
- /**?
- ?*?json处理工具集?
- ?*??
- ?*?@author?rain?
- ?*??
- ?*/??
-
public?class?CustomSerialization?{??
- ????private?static?final?ObjectMapper?mapper?=?new?ObjectMapper();??
- ????static?class?FilteredWriter?extends?BeanPropertyWriter?{??
- ????????public?FilteredWriter(BeanPropertyWriter?w)?{??
- ????????????super(w);??
- ????????}??
- ????????public?void?serializeAsField(Object?bean,?JsonGenerator?jgen,??
- ????????????????SerializerProvider?prov)?