Jackson扁平化处理对象
POJO对象
@Data
public class People {private PeopleInfo peopleInfo;private List<String> peopleIds;private Map<String, String> peopleMap;@Datapublic static class PeopleInfo {private String name;private String address;}
}
JSON序列化处理
直接将对象进行序列化后,输出的JSON如下:
{"peopleInfo": {"name": "name","address": "address"},"peopleIds": ["1","2","3"],"peopleMap": {"key1": "value1","key2": "value2"}
}
实际有些业务中,想要的JSON形式扁平化,如下:
{"name": "name","address": "address","peopleIds": ["1","2","3"],"key1": "value1","key2": "value2"
}
普通对象
针对普通对象处理,可以直接使用Jackson的JsonUnwrapped注解
注意,此注解不满足使用Map对象
@Data
public class People {@JsonUnwrappedprivate PeopleInfo peopleInfo;private List<String> peopleIds;private Map<String, String> peopleMap;@Datapublic static class PeopleInfo {private String name;private String address;}
}
MAP对象
可以直接使用 @JsonAnySetter 和 @JsonAnySetter
@Data
public class People {@JsonUnwrappedprivate PeopleInfo peopleInfo;private List<String> peopleIds;private Map<String, String> peopleMap;@JsonAnySetterpublic void addPeopleMap(String key, String value) {peopleMap.put(key, value);}@JsonAnyGetterpublic Map<String, String> getPeopleMap() {return peopleMap;}@Datapublic static class PeopleInfo {private String name;private String address;}
}