あなたの例と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)、またはWriter
using ObjectMapper.writeValue(Writer, Object)に書き込むこともできることに注意してください。
この場合JsonProperty
、どちらか一方のアクセサーにのみアノテーションが必要であり、両方には必要ありません。注釈isDone
を付けるだけで、必要な JSON プロパティ名が得られます。
注釈を使用する代わりにJsonProperty
、アクセサーの名前を変更することもできますsetIsDone/getIsDone
。その場合、注釈は不要です。
手っ取り早い Jackson のチュートリアル: Jackson in 5 minutesを参照してください。特定のプロパティの理解は、Jackson アノテーションのドキュメントを調べることから得られました。