あなたの例とJacksonの問題は、JSONプロパティ名のデフォルトの選択肢です.Jacksonは、JSONプロパティ名として表示さisDoneれ、setDone選択doneされます. JsonProperty注釈を使用して、このデフォルトの選択をオーバーライドできます。
public class Status
{
private boolean isDone;
@JsonProperty("isDone")
public boolean isDone()
{
return this.isDone;
}
@JsonProperty("isDone")
public void setDone(boolean isDone)
{
this.isDone = isDone;
}
}
それで:
Status instance = new Status();
String jsonString = null;
instance.setDone(true);
ObjectMapper mapper = new ObjectMapper();
jsonString = mapper.writeValueAsString(instance);
jsonStringが含まれるようになりまし{ "isDone" : true }た。OutputStream文字列をusing ObjectMapper.writeValue(OutputStream, Object)、またはWriterusing ObjectMapper.writeValue(Writer, Object)に書き込むこともできることに注意してください。
この場合JsonProperty、どちらか一方のアクセサーにのみアノテーションが必要であり、両方には必要ありません。注釈isDoneを付けるだけで、必要な JSON プロパティ名が得られます。
注釈を使用する代わりにJsonProperty、アクセサーの名前を変更することもできますsetIsDone/getIsDone。その場合、注釈は不要です。
手っ取り早い Jackson のチュートリアル: Jackson in 5 minutesを参照してください。特定のプロパティの理解は、Jackson アノテーションのドキュメントを調べることから得られました。