JSONファイルにマーシャリング/アンマーシャリングするためにJacksonで注釈を付けようとしているこのオブジェクト構造があります。
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の名前であり、はマップ内の値オブジェクトの値です。マップの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"
}
}
]
}
Jacksonまたは他のJSONシリアル化ライブラリを使用して上記のマッピングを取得する方法はありますか?"value"私の目標は、毎回書き込みの冗長性を取り除き、ファイルを可能な限り圧縮することです。
のマップはBのリストに変換できますが、Cそれでもマッピングが必要です
{"name" : "value"} for each object C