背景
有个场景就是要把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住了