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