您的当前位置:首页正文

jackson:POJO和map互转

来源:化拓教育网

背景

有个场景就是要把pojo转成map<String,Object>,用于展示,但是自己写的感觉太丑了,一个pojo就得写一个。
比如下面这样


image.png

想看看怎么改进

jackson的支持

参照refer,发现jackson是支持pojo和map互转的(之前只是看前辈用过,以为只是和json String互相转换用的,结果发现jackson功能太强大了,可以参照知乎的refer

pojo和map转换的demo

非常简单

public class Main {
    static class Student {
        @JsonIgnore
        private String name;
        @JsonIgnore
        private int age;
        private List<String> skills;
        // getters setters

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public List<String> getSkills() {
            return skills;
        }

        public void setSkills(List<String> skills) {
            this.skills = skills;
        }
    }
    public static void main(String[] args) {
        ObjectMapper oMapper = new ObjectMapper();

        Student obj = new Student();
        obj.setName("asd");
        obj.setAge(34);
        obj.setSkills(Arrays.asList("zxc","h"));

        // object -> Map
        Map<String, Object> map = oMapper.convertValue(obj, Map.class);
        System.out.println(map);
    }
}

输出如下
因为其他属性都被JsonIgnore了

{skills=[zxc, h]}

思考

后续可以看看jackson源码,不过现在rocketmq源码都block住了

refer