将 Map 序列化为父对象的属性
Serialize Map as properties of parent object
我有一个 class Parent,它有一些属性,包括一个 Map。
public class Parent {
private final int propA;
private final String propB;
private final Map<String, Object> map;
publicParent(int propA, String propB, Map<String, Object> map) {
this.propA = propA;
this.propB = propB;
this.map = map;
}
public int getPropA() {
return propA;
}
public String getPropB() {
return propB;
}
public Map<String, Object> getMap() {
return map;
}
}
在序列化时,我会得到这个:
{
"propA": 5,
"propB": "foo",
"map": {
"bar": "bong",
"bing": "bang"
}
}
如何注释 class 以便 Jackson 序列化它的一个实例,而不是将映射条目作为裸属性放置到父对象?
{
"propA": 5,
"propB": "foo",
"bar": "bong",
"bing": "bang"
}
我使用了 @JsonAnyGetter
注释来实现这一点。还有一个匹配的 @JsonAnySetter
注释做相反的事情:在地图中填充无法识别的属性。
@JsonAnyGetter
public Map<String, Object> getMap() {
return map;
}
这里有一个有用的指南:https://www.baeldung.com/jackson-annotations
我有一个 class Parent,它有一些属性,包括一个 Map
public class Parent {
private final int propA;
private final String propB;
private final Map<String, Object> map;
publicParent(int propA, String propB, Map<String, Object> map) {
this.propA = propA;
this.propB = propB;
this.map = map;
}
public int getPropA() {
return propA;
}
public String getPropB() {
return propB;
}
public Map<String, Object> getMap() {
return map;
}
}
在序列化时,我会得到这个:
{
"propA": 5,
"propB": "foo",
"map": {
"bar": "bong",
"bing": "bang"
}
}
如何注释 class 以便 Jackson 序列化它的一个实例,而不是将映射条目作为裸属性放置到父对象?
{
"propA": 5,
"propB": "foo",
"bar": "bong",
"bing": "bang"
}
我使用了 @JsonAnyGetter
注释来实现这一点。还有一个匹配的 @JsonAnySetter
注释做相反的事情:在地图中填充无法识别的属性。
@JsonAnyGetter
public Map<String, Object> getMap() {
return map;
}
这里有一个有用的指南:https://www.baeldung.com/jackson-annotations