前几天正好要做rest api的接口,需要用到json接口,于是搞了一下jackson.前段时间WSN做过技术分享,不过没形成代码工具类,只好自已又重搞了一遍。在springmvc3中就是用jackson转的json,性能大家也测试过,是相当不错的。
我们用到的主要是java转json,还有json转java.现在已经够用了,等有空的时候,再汇总一下其它要点,主要是注解方面的东西。
看一下工具类:
/** * Json实用类,扩展封装Jackson. * * @author Peter Wei (mailto:guangbowei@xxx.com) * @since 2011 * @version 1.0.0 */ public class JsonUtils { Logger log final static ObjectMapper objectMapper; /** * 是否打印美观格式 */ static { StdSerializerProvider sp sp.NullSerializerobjectMapper , sp, objectMapper. objectMapper; } /** * JSON串转换为Java泛型对象,可以是各种类型,此方法最为强大。用法看测试用例。 * @param <T> * @param jsonString JSON字符串 * @param tr TypeReference,例如: new TypeReference< List<FamousUser> >(){} * @return List对象列表 */ T .Te) { log.e. /** * Java对象转Json字符串 * * @param object Java对象,可以是对象,数组,List,Map等 * @return json 字符串 */ toJsonjsonString isPretty) { jsonString .jsonString e) { log.e.jsonString; } /** * Json字符串转Java对象 * * @param jsonString * @param c * @return */ json2Object .objectMapper.e) { log.e. }
测试用例:
/** * Jackson json java操作测试类. * * @author Peter Wei (mailto:guangbowei@xxx.com) * @since 2011 * @version 1.0.0 */ public class JsonUtilsTest extends BaseTest { @Test List i i iFamousUser user user.i); user.user.i); user.i); user.i); user.i); user.list.s assertNotNull @Test List i i iFamousUser user user.i); user.user.i); user.i); user.i); user.i); user.list.s Listlist2 assertNotNull(list2); assertEquals., @Test List i i iFamousUser user user.i); user.user.i); user.i); user.i); user.i); user.list.s FamousUser[] list2; list2 JsonUtils.. assertNotNull(list2); assertEquals., /** * JsonUtils.json2GenericObject //可以很好的反序列化为Java的泛型对象,居家必备之良品呀。 * * @throws Exception */ @Test List MapHashMapi i iPlazaContent content content.content.content.i); content.content.content.content.content.icontent.ilist. map., list); map., list); //可以很好的反序列化为Java的泛型对象,居家必备之良品呀。 Maps, List....assertNotNull value, JsonGenerator jgen, SerializerProvider provider, JsonProcessingException { jgen.
原创文章,转载请注明地址: Jackson使用总结-java和json的序列化与反序化
相关文章:Tagged on: jackson, Java