峰之博纹 - Pelephone个人博客

超简单的jackson数据绑po,pojo,vo,十分钟会用(原创)

项目需要,要用上json操作数据,在网上搜了几篇评测,再加上自己目测(-_-#),最后决定用jackson,然后便开始搜资料学习.

我要用的主要是对象转json字符,然后字符转对象,还要解析POJO,VO
刚开始觉得蛮郁闷的,资料不怎么多,只能无奈之下啃英文+看源码.啃了半天才知道,原来jackson虽然相当强大,但用起来相当简洁.各种我们要用的功能作者都考虑进去了.

自己写了一些测试代码,短短几行,不过我要的需已经全部都有了.先上码:

ro类
 1 package;
2 /**
3 * 自动生成的vo,对应数据库tb_Role表
4 */
5 public class RoleVO implements java.io.Serializable {
6 private int roleId;
7 private String roleName;
8 private int lv;
9
10 public void setRoleId(int value) {
11 this.roleId = value;
12 }
13
14 public int getRoleId() {
15 return roleId;
16 }
17
18 public void setRoleName(String value) {
19 this.roleName = value;
20 }
21
22 public String getRoleName() {
23 return roleName;
24 }
25
26 public void setLv(int value) {
27 this.lv = value;
28 }
29
30 public int getLv() {
31 return lv;
32 }
33 }

 

 1 public static void main(String args[]) {
2 try {
3 // json字符串转vo/po/pojo对象
4 String strRo = "{\"roleId\":1,\"roleName\":\"role1\",\"lv\":0}";
5 RoleVO role = mapper.readValue(strRo, RoleVO.class);
6
7 //json字符串转List(包括List里的泛型)
8 String strLs = "[{\"roleId\":1,\"roleName\":\"role1\",\"lv\":0}," +
9 "{\"roleId\":2,\"roleName\":\"role2\",\"lv\":2}," +
10 "{\"roleId\":3,\"roleName\":\"role3\",\"lv\":0}]";
11 List<RoleVO> roleLs = mapper.readValue(strLs, new TypeReference<List<RoleVO>>() {});
12 System.out.println("json 转列表类型"+roleLs);
13
14 //json字符串转Map(包括Map里的泛型)
15 String strMap = "{\"role1\" : {\"roleId\":1,\"roleName\":\"role1\",\"lv\":0}," +
16 "\"role2\" : {\"roleId\":1,\"roleName\":\"role2\",\"lv\":0}," +
17 "\"role3\" : {\"roleId\":1,\"roleName\":\"role3\",\"lv\":0}}";
18 Map<String,RoleVO> roleMap = mapper.readValue(strMap, new TypeReference<Map<String,RoleVO>>() {});
19 System.out.println(roleMap);
20
21 //对象转json字符串
22 String mapStr = mapper.writeValueAsString(roleMap);
23 String lsStr = mapper.writeValueAsString(roleLs);
24 String voStr = mapper.writeValueAsString(role);
25
26 System.out.println(mapStr);
27 System.out.println(lsStr);
28 System.out.println(voStr);
29 } catch (Exception e) {
30 System.out.println("转换出错");
31 }
32 }


操作相当简单,但功能很强大,TypeReference这个类用得很聪明,原来java的泛型还可以这样用.详细的信息要以google能搜出很多.

如果哪位想要做缓存的,jackson还提供了缓存接口,还可进行io操作.不过那块我不需要,暂时没研究.

posted @ 2011-11-01 16:04  Pelephone  阅读(3198)  评论(0)    收藏  举报