我有这个对象结构,我试图用 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 方法:C
B
VALUE_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