如何在安心请求期间转换即时服务?



我想执行一个放心的GET请求。响应包含对象列表,而这些对象又具有即时属性。

目前我得到一个例外:

com.fasterxml.jackson.databind.exc.InvalidFormatException:无法从字符串"2022-03-08T20:53:02.990"中反序列化类型java.time.Instant的值:无法反序列化java.time.Instant:(java.time.format.DateTimeParseException)无法在索引 19 处解析文本"2022-03-08T20:53:02.990" at [来源: (字符串)"{"时间戳":"bf105ae0-9f21-11ec-9c3e-fddae3040d6b","time":"2022-03-08T20:53:02.990","user":"XXX_SYSTEM","correlationId":"8fc84c87-aece-45b8-a7a6-66317152c840","key":"20220308_A14_0000000000000_7777777700003_5743e8cd40554a7d8110aa149e7015de_53","category":"INFO","context":"BLA","type":"BLUBB","system":true,"event":"FOO_BAR"}";行: 1, 列: 67] (通过引用链: xx.yyy.zzz.dto.MyResult$MyResultBuilder["time"])

请求:

return given()
.baseUri(baseUrl)
.pathParam("aaa", value)
.param("zeitstempelAb", FORMATTER.format(from))
.param("zeitstempelBis", FORMATTER.format(to))
.param("limit", "1000")
.when()
.log().all()
.get("aaa/{value}")
.then()
.log().all()
.assertThat()
.statusCode(200)
.extract()
.body()
.jsonPath()
.getList("content", MyResult.class)
;

使用的格式化程序:

private static final DateTimeFormatter FORMATTER = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd'T'HH:mm:ss".concat("Z"))
.toFormatter()
.withZone(ZoneOffset.UTC);

我的果实:

@JsonDeserialize(builder = MyResult.MyResultBuilder.class)
@Value
@Builder(setterPrefix = "with")
public class MyResult {
UUID timestamp;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'", timezone = "UTC")
Instant time;
.
.
.
}

如何摆脱该异常?

原因:

2022-03-08T20:53:02.990将映射到本地日期时间。

2022-03-08T20:53:02.990Z将映射到即时。

修复:

  • 删除@JsonFormat...
  • 更改Instant time-->LocalDateTime time

相关内容

  • 没有找到相关文章

最新更新