ジャクソンJSON文字列にオプションとしてJavaオブジェクトプリミティブのプロパティを変換

Cugomstik:

私は春ブーツに新しいですし、私は、サードパーティのAPIにリクエストを送信したいと思います。私はとして使用するJSONでポストパラメータ以下の持って@RequestBodyを

{ "たstartDate": "2015年7月1日"、 "endDateに": "2015年10月1日"、 "はuserId":1、 "タイプ":1}

OR

{ "たstartDate": "2015年7月1日"、 "endDateに": "2015年10月1日"}

public class ReportRequest {

@NotNull
private String startDate;

@NotNull
private String endDate;

private int userId;

private int type;

//getters and setters

私が使用@JsonInclude(JsonInclude.Include.NON_EMPTYをクラスとフィールドレベルで。私も試したNON_NULLを「userIdを」と「タイプ」を無視することが、私はまだ@RequestBodyオブジェクトでそれらを持っています。

@PostMapping(value="/getData", produces = "application/json")
public ResponseEntity getReport(@Valid @RequestBody ReportRequest reportRequest){

私はすべてのJSONのプロパティで要求を送信する問題はありません。私はちょうど必須データを送信するときしかし、「userIdを」と「タイプは、」自動的に0に設定されています。

私が使用して知っているオプションはベストプラクティスではありません。私は2つの、オプションのJSON要求データと要求オブジェクトを作成する方法を考え出すことができませんでした。ありがとうございました。

デッドプール :

であるこれは原始的であり、デフォルト値があるだけなので、ヌル値を持つプロパティを無視するだろうタイプそれのデフォルト値があることと、ジャクソンは、それらを除外することができますuserIdtypeint0JsonInclude.Include.NON_NULLuserIdtypeIntegernull

@JsonInclude(JsonInclude.Include.NON_NULL)
public class ReportRequest {

  @NotNull
  private String startDate;

  @NotNull
  private String endDate;

  private Integer userId;

  private Integer type;

 }

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=4146&siteId=1