Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。
相比json-lib,jackjson的使用更加的简单方便所依赖的jar包也比较少,jackjson的社区比较的活跃,版本更新的速度较快,jackjson同时能支持注解的方式和对xml进行转换。
User user = new User();
user.setName("小明");
user.setEmail("xiaoming@qq.com");
user.setAge(20);
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
user.setBirthday(dateformat.parse("2014-10-01 17:39:11"));
ObjectMapper objectMapper = new ObjectMapper();
// 将对象转换成json格式
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
String json = objectMapper.writeValueAsString(user);
System.out.println(json);
// 将json格式转换成对象
User user2 = objectMapper.readValue(json, User.class);
System.out.println(user2.toString());
// 将集合转换成json
List<User> list = new ArrayList<User>();
list.add(user);
String jsonString = objectMapper.writeValueAsString(list);
System.out.println(jsonString);
// json转换成集成对象
objectMapper.writeValue(new File("E:/lib/jackjson/jackjsonTest.txt"), jsonString);
User user3 = new Lisi();
user3.setAge(30);
user3.setBirthday(new Date());
user3.setEmail("11@22.com");
user3.setName("lisi");
System.out.println(objectMapper.writeValueAsString(user3));
jackjson的常用注解如下:
@JsonIgnoreProperties(ignoreUnknown=true) :对于未知的属性,进行忽略
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class") :作用于类/接口,被用来开启多态类型处理,对基类/接口和子类/实现类都有效.
@JsonIgnore:可以忽略的属性
关于jackjson中注解的详细说明,可以参考
http://blog.csdn.net/sdyy321/article/details/40298081