POJO对象
@Data
public class People {
private PeopleInfo peopleInfo;
private List<String> peopleIds;
private Map<String, String> peopleMap;
@Data
public 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 {
@JsonUnwrapped
private PeopleInfo peopleInfo;
private List<String> peopleIds;
private Map<String, String> peopleMap;
@Data
public static class PeopleInfo {
private String name;
private String address;
}
}
MAP对象
可以直接使用 @JsonAnySetter 和 @JsonAnySetter
@Data
public class People {
@JsonUnwrapped
private PeopleInfo peopleInfo;
private List<String> peopleIds;
private Map<String, String> peopleMap;
@JsonAnySetter
public void addPeopleMap(String key, String value) {
peopleMap.put(key, value);
}
@JsonAnyGetter
public Map<String, String> getPeopleMap() {
return peopleMap;
}
@Data
public static class PeopleInfo {
private String name;
private String address;
}
}