如何为javaswaggerapi创建一个可重用的字段

bqjvbblv  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(142)

我有一个javaspring引导rest控制器,它接受一个java对象。

@PutMapping(path = "api/v1/examples/{id}/update")
public ResponseEntity<Void> updateExample(@PathVariable("id") String personsId, @RequestBody ExampleDto dto) {
    return ResponseEntity.noContent().build();
}

示例如下

public class Example {

    @ApiModelProperty(example = "2021-02-18T13:45:07+02:00", notes = "Date pattern is yyyy-MM-dd'T'HH:mm:ssZ example value 2021-02-18T13:45:07+02:00")
    private ZonedDateTime date;

    public String getDate() {
       return date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
    }

    public void setDate(String date) {
       this.date = ZonedDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
    }
  }

这是我喜欢的方式。它正确地生成swagger文件,并在swaggerui中建议我的dto可以用setdate(string date)方法解析的正确值。
但是我想做一个可重用的组件,我可以把它添加到我的api dto中,这样我就不用创建所有的方法了。
如果我想添加多个日期字段,我的代码应该是这样的。

public class Example {

    @ApiModelProperty(example = "2021-02-18T13:45:07+02:00", notes = "Date pattern is yyyy-MM-dd'T'HH:mm:ssZ example value 2021-02-18T13:45:07+02:00")
    private ZonedDateTime date;

    public String getDate() {
       return date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
    }

    public void setDate(String date) {
       this.date = ZonedDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
    }

    @ApiModelProperty(example = "2021-02-18T13:45:07+02:00", notes = "Date pattern is yyyy-MM-dd'T'HH:mm:ssZ example value 2021-02-18T13:45:07+02:00")
    private ZonedDateTime dateTwo;

    public String getDateTwo() {
       return dateTwo.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
    }

    public void setDateTwo(String date) {
       this.dateTwo = ZonedDateTime.parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
    }
  }

我想知道我是否能做这样的事。

@Getter
@Setter
public class Example {

    private MyDateType date;

    private MyDateType dateTwo;

  }

我已经可以做到了。但是我的json看起来像这样。

{
 "date": {
            "innerDate": "2021-02-18T13:45:07+02:00"
         },
 "dateTwo": {
            "innerDate": "2021-02-18T13:45:07+02:00"
         },
}

我希望json看起来像这样

{
 "date": "2021-02-18T13:45:07+02:00",
 "dateTwo": "2021-02-18T13:45:07+02:00"
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题