我有这个对象结构,我试图用 Jackson 注释它以编组/解组到 JSON 文件。
public class A {
List<B> bList;
}
public class B {
String attr;
Map<String, C> map;
}
public class C {
@JsonIgnore
String name;
String value;
}
A有一个 's 的列表B和B一个 's 的映射,C其中映射的键是 的name属性C。如果可能的话,我希望 JSON 看起来像这样:
{
"bList" : [
{
"attr":"itsValue"
"KEY_IN_MAP":"VALUE_IN_C",
"KEY_2_IN_MAP":"VALUE_2_IN_C"
}
]
}
where是's map中作为 keyKEY_IN_MAP的 name,是 map中 value 对象的值。我尝试为地图注释 put 方法:CBVALUE_IN_C
@JsonAnySetter
private void put(String name, C value) {
map.put(name, c);
}
但是编组这给了我:
{
"bList" : [
{
"attr":"itsValue"
"KEY_IN_MAP": {
"value":"VALUE_IN_C",
},
"KEY_2_IN_MAP": {
"value":"VALUE_2_IN_C"
}
}
]
}
有没有办法用杰克逊或任何其他 JSON 序列化库获得上述映射?我的目标是摆脱"value"每次写入的冗余,尽可能压缩文件。
中的地图B可以变成一个列表,C但我仍然需要映射
{"name" : "value"} for each object C