0

我有这个对象结构,我试图用 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 的列表BB一个 '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
4

1 回答 1

1

以下是我的一些建议:

  1. 让你Map<String,C>成为一个Map<String,String>.
  2. 你也可以让你Map<String,C>成为List<C>

请查看讨论相同内容的其他线程。

于 2013-01-14T15:23:14.903 回答