008 jackson的一些使用记录

public class TestClass {

    // 测试序列化--序列化一个Bean
    @Test
    public void test1() throws Exception {
        User user = new User();
        user.setName("trek");
        user.setAge(11);
        user.setBirthday(new Date());
        user.setEmail("1112qq.com");
        // 序列化对象
        ObjectMapper mapper = new ObjectMapper();
        String value = mapper.writeValueAsString(user);
        System.out.println(value);
    }

    // 序列化一个Map
    @Test
    public void test2() throws Exception {
        Map<String, User> map = new HashMap<String, User>();
        User user = new User();
        user.setName("trek");
        user.setAge(11);
        user.setBirthday(new Date());
        user.setEmail("1112qq.com");
        User temp = new User();
        BeanUtils.copyProperties(user, temp);
        temp.setAge(111);
        map.put("1", user);
        map.put("2", temp);
        ObjectMapper mapper = new ObjectMapper();
        String value = mapper.writeValueAsString(map);
        System.out.println(value);
    }

    // 测试序列化一个List
    @Test
    public void test3() throws Exception {
        List<User> list = new ArrayList<>();
        for(int i = 0;i<3;i++) {
            User user = new User();
            user.setName("trek");
            user.setAge(11+i);
            user.setBirthday(new Date());
            user.setEmail("1112qq.com");
            list.add(user);
        }
        ObjectMapper mapper = new ObjectMapper();
        String value = mapper.writeValueAsString(list);
        System.out.println(value);
    }
    
    //测试反序列化 --一个Bean
    @Test
    public void test4() throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        String value = "{\"name\":\"trek\",\"age\":11,\"birthday\":1528178729297,\"email\":\"1112qq.com\"}";
        // 反序列化
        System.out.println(mapper.readValue(value, User.class));
    }
    
    //测试反序列化 --- Map结构 ,现在需要一个类型引用
    @Test
    public void test5() throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        String value = "{\"1\":{\"name\":\"trek\",\"age\":11,\"birthday\":1528178874584,\"email\":\"1112qq.com\"},\"2\":{\"name\":\"trek\",\"age\":111,\"birthday\":1528178874584,\"email\":\"1112qq.com\"}}"    ;
        Map<String,Object> map = mapper.readValue(value, new TypeReference<Map<String,User>>() {});
        System.out.println(map);
    }
    
    //我们可以使用typeRefrence来完成复杂的类型的转化.
}

[1] 需要注意的是一个对象,ObjectMapper对象

[2]需要注意的是两个方法 readValue() ,将一个字符串转换为一个对象

  writeValueAsString(),将一个对象转换为json格式

[3]需要注意的类型,对于复杂类型的情况下,我们需要创建一个类型模板TypeRefrence ,进行反序列化的类型指明.

posted @ 2018-06-05 16:22  最爱五仁月饼  阅读(119)  评论(0编辑  收藏  举报