Jackson的基本用法

Jackson 最常用的 API 就是基于"对象绑定" 的 ObjectMapper。下面是一个 ObjectMapper 的使用的简单示例。

利用Lombok创建一个简单类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyGirl{
    private String name;
    private int age;
}

使用Jackson来将POJO写为JOSN字符串或者JOSN文件,

使用Jackson来将JOSN串或文件转变为POJO对象。

        ObjectMapper mapper = new ObjectMapper();
        MyGirl myGirl = new MyGirl ("quanzixian", 25);

        // 写为字符串
        String text = mapper.writeValueAsString(myGirl );
        // 写为文件
        mapper.writeValue(new File("myGirl .json"), myGirl );
        // 写为字节流
        byte[] bytes = mapper.writeValueAsBytes(myGirl );
        System.out.println(text);
        // 从字符串中读取
        MyGirl myNewGirl= mapper.readValue(text, MyGirl.class);
        // 从字节流中读取
        myNewGirl = mapper.readValue(bytes, MyGirl.class);
        // 从文件中读取
        myNewGirl= mapper.readValue(new File("myGirl.json"), MyGirl.class);
        System.out.println(myNewGirl);

集合的映射

除了使用Java类进行映射之外,我们还可以直接使用Map和List等Java集合组织JSON数据,在需要的时候可以使用readTree方法直接读取JSON中的某个属性值。需要注意的是从JSON转换为Map对象的时候,由于Java的类型擦除,所以类型需要我们手动用new TypeReference<T>给出。

        ObjectMapper mapper = new ObjectMapper();

        Map<String, Object> map = new HashMap<>();
        map.put("age", 25);
        map.put("name", "quanzhixian");
        map.put("interests", new String[]{"pc games", "music"});

        String text = mapper.writeValueAsString(map);
        System.out.println(text);

        Map<String, Object> map2 = mapper.readValue(text, new TypeReference<Map<String, Object>>() {
        });
        System.out.println(map2);

        JsonNode root = mapper.readTree(text);
        String name = root.get("name").asText();
        int age = root.get("age").asInt();

        System.out.println("name:" + name + " age:" + age);

 

posted @ 2020-02-16 14:37  陈涤尘  阅读(235)  评论(0)    收藏  举报