5

以下に相当するジャクソンマッピングを作成したいだけです:

{\"isDone\": true}

次のようなクラスを作成する必要があると思います:

public class Status {

    private boolean isDone;

    public boolean isDone{
        return this.isDone;
    }

    public void setDone(boolean isDone){
        this.isDone = isDone;
    }
}

しかし、どうすればそれをインスタンス化し、JSON を string に書き込むことができますか?

4

2 に答える 2

6

あなたの例と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 アノテーションのドキュメントを調べることから得られました。

于 2012-06-19T22:39:32.000 に答える
2

右。必要なコード:

ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(new Status()));
于 2012-06-19T23:07:25.627 に答える