文档介绍:jackson简单用法总结
篇一:
Jacksn处理jsn的一些常见使用JACKSN处理JSN的一些常见使用 201X/11/18 Jacksn是一个功能强大的Java串行化库。除了支持常用的jsn,同时还支持Smile,BSN,XML,CSV,YAML。接下来就介绍一些处理jsn时常见的使用场景,文中的例子都是在
1.9版本下运行的。 Jacksn的jsn库提供了3种API:
Streaming API :
性能最好? Tree Mdel:
最灵活? Data Binding :
最方便? 其中最常用到的就是Data Binding了,基本的用法如下 bjectMapper mapper = ne bjectMapper; String jsn= mapper.riteValueAsString(f); F f = mapper.readValue(jsn, F.class); bjectMapper是线程安全的,应该尽量的重用。需要注意的是,Jacksn是基于JavaBean来串行化属性的,如果属性没有GETTER方法,默认是不会输出该属性的。但是在串行化的时候,经常会有特殊的需求来对输出的结果进行自定义。比如不输出某几个属性,或者自定义属性的名字,等等。Jacksn提供了非常多的方法来满足我们的自定义需求。假设有这么一个对象:
class User { private lng id; private String name; private String avatr240; private String avatr160; private String address; public lng getId { return id;} public String getName{ return name; } public String getAvatr240 { return a
vatr240;} public String getAvatr160{ return avatr160; } public String getAddress{ return address;}}如果不想输出id,最简单的方法,就是给该属性加上注解JsnIgnre:@JsnIgnre private lng id;或者***@JsnIgnre public lng getId{ return id; } 因为JsnIgnre的target可STRUCTR, FIELD, METHD 如果不想输出多个属性,比如id,address和avatr160,除了在每个属性上添加JsnIgnre,也可以直接在类上添加注解JsnIgnrePrperties:@JsnIgnrePrperties({ id, avatr160 , address }) class User { 这里的User类只有5个属性,使用anntatin控制忽略哪些属性还是绰绰有余的。加入有一个类有上百个属性,如果只想输出其中的10来个属性,使用JsnIgnre就显得太繁琐了。此时就可以使用JSN Vie或MixIn Anntatin了。先来看一下JS