小编Pra*_*ran的帖子

Swagger 声明 schema = @Schema(implementation = Map.class) 在 swagger-ui 中将 Schema 表示为 String

我正在尝试创建springdocswagger 文档,并且我想Map<String, Object>以更好的客户端可读方式表示具有数据类型的请求正文。但是当我声明@io.swagger.v3.oas.annotations.parameters.RequestBody(content = @Content(schema = @Schema(implementation = Map.class)架构如下String(附有下面的屏幕截图)

在此输入图像描述

方法声明

        @Operation(security = {@SecurityRequirement(name = "bearer-key")}, summary = "Create Data", operationId = "createData", description = "Create createData for the **`type`**. ")
    @ApiResponses(value = {
            @ApiResponse(responseCode = "201", description = "Data created", content = @Content(schema = @Schema(implementation = Map.class),
                    examples = {@ExampleObject(value = "{\n" +
                            "    \"id\": \"927d810c-3ac5-4584-ba58-7c11befabf54\",\n" +
                            "}")})),
            @ApiResponse(responseCode = "400", description = "BAD Request")})
    @PostMapping(value = "/data/type", produces = APPLICATION_JSON_VALUE, consumes …
Run Code Online (Sandbox Code Playgroud)

swagger spring-boot springdoc springdoc-ui

8
推荐指数
2
解决办法
3万
查看次数

日期的默认序列化格式是否已随最近的 Spring boot 版本/Jackson 版本而更改?

我正在将 SpringBoot 版本从 2.2.2.RELEASE 更新到 2.3.1.RELEASE。突然间,我所有 API 响应的所有日期格式都发生了变化(在时区表示部分)。

+0000+00:00

"timestamp": "2020-05-19T05:46:49.469+0000" -  2.2.2.RELEASE

"timestamp": "2020-06-30T09:55:23.014+00:00" - 2.3.1.RELEASE
Run Code Online (Sandbox Code Playgroud)

这是我的 Simple POJO:我没有@JsonFortmat为日期字段添加任何配置。


@NoArgsConstructor
@AllArgsConstructor
@Getter
public class BuildInfo{
    private String message;
    private Date timestamp;
}

Run Code Online (Sandbox Code Playgroud)

和我的控制器方法

    @GetMapping(value = "/buildinfo", produces = "application/json")
    ResponseEntity<BuildInfo> getBuildInfo();

Run Code Online (Sandbox Code Playgroud)

我没有添加任何序列化/反序列化逻辑,并且仅使用 SpringBoot 的默认行为进行开发。我正在尝试搜索有关此更改的任何发布文档,但找不到任何文档。

下面的更改,我可以执行以适应这些更改

  1. 在每个日期字段中使用@JsonFormat带有自定义模式的注释(但我不能这样做,因为这是客户端库)

       @JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ")
       private Date timestamp;
    
    Run Code Online (Sandbox Code Playgroud)
  2. Jackson2ObjectMapperBuilderCustomizer在应用程序级别注入。

 @Bean
 public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
     return builder -> builder.simpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
 }
Run Code Online (Sandbox Code Playgroud)

但我想缩小格式更改的根本原因?从哪个版本的 Jackson/Spring 库开始?

jackson spring-boot

5
推荐指数
1
解决办法
4305
查看次数

标签 统计

spring-boot ×2

jackson ×1

springdoc ×1

springdoc-ui ×1

swagger ×1