我有这个对象结构,我试图用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
有一个B
列表,B
有一个C
的地图,其中地图的关键字是name
属性C
。如果可能,我希望JSON看起来像这样:
{
"bList" : [
{
"attr":"itsValue"
"KEY_IN_MAP":"VALUE_IN_C",
"KEY_2_IN_MAP":"VALUE_2_IN_C"
}
]
}
KEY_IN_MAP
的名称C
是B
地图中的关键字,VALUE_IN_C
是地图中值对象的值。我已经尝试为地图注释put方法:
@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"
}
}
]
}
有没有办法与Jackson或任何其他JSON序列化库进行上述映射?我的目标是摆脱每次写"value"
的冗余并尽可能压缩文件。
B
中的地图可以转换为C
的列表,但我仍然需要映射
{"name" : "value"} for each object C
答案 0 :(得分:1)
以下是我的一些建议:
Map<String,C>
成为Map<String,String>
。Map<String,C>
设为List<C>
。请查看讨论相同内容的other帖子。