StringフィールドとMapフィールドを含む次のクラスがあります。Jacksonを使用してjsonにシリアル化したい。
public class Mapping
private String mAttribute;
@JsonIgnore
private Map<String, String> mMap;
@JsonAnyGetter
public Map<String, String> getMap() {
//some logic to populate map
}
@JsonAnySetter
public void put(// some params) {
//some more logic
}
@JsonProperty(value = "attribute")
public String getAttribute() {
return mAttribute;
}
public void setAttribute(String aAttribute) {
mAttribute= aAttribute;
}
}
Mapping
オブジェクトをインスタンス化してから、それを使用ObjectMapper
してファイルに書き込みます。
ObjectMapper om = new ObjectMapper();
om.writeValue(destFile, myMappingObject);
何らかの理由で、Mapping
インスタンスmyMappingObject
を2回書き込んでいます。どこかに可視性オプションを設定していないと思いますが、どこにあるのかわかりません。
jsonは次のようになりますが、ファイルに2回だけ表示されます。
{
"attribute" : "someValue",
"map-key1" : "map-value1",
"map-key2" : "map-value2"
}
これはありますが、以前のバージョンのジャクソンで修正されたようです。また、メソッドの名前をに変更しようとしましたが、random()
それでも2回呼び出されます(必要な回数)。