当前位置: 首页 > 知识库问答 >
问题:

如何在恢复请求期间转换即时消息?

贺聪
2023-03-14

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

当前我遇到一个异常:

com.fasterxml.jackson.databind.exc.InvalidFormatException:无法反序列化类型java.time.Instant从字符串"2022-03-08T20:53:02.990":无法反序列化java.time.Instant:(java.time.format.DateTimeParseException)文本'2022-03-08T20:53:02.990'无法在索引19下解析[Source:(String)"{"time戳":"bf105ae0-9f21-11ec-9c3e-fddae3040d6b","time":"2022-03-08T20:53:02.990","user":"XXX_SYSTEM","coryId":"8fc84c87-aece-45b8-a7a6-66317152c840","key":"20220308_A14_0000000000000__5743e8cd40554a7d8110aa149e7015de_53","类别":"INFO","上下文":"BLA","type":"BLUBB","system": true,"事件":"FOO_BAR"}";第1行,第67列](通过

请求:

        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);

MyResult POJO:

@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;
    .
    .
    .
}

我如何摆脱这个异常?

共有1个答案

逄宁
2023-03-14

原因:

2022-03-08T20:53:02.990将映射到LocalDateTime。

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

修复:

  • 删除JsonFormat
 类似资料:
  • 在Java中获取计数后,如何将“时间戳”转换为? 我目前的代码如下: 这里我得到的输出是2012-08-07 0,但是等效查询返回3。为什么我得到0?

  • 从API中,我得到这样的消息:“2022-05-12T15:55:03.000000Z”我的问题是,我如何才能做到:12.05.2022,15:55 我的问题是,这里有什么简单的方法吗?否则我可以用字符串方法慢慢地和部分地转换它,但我想一定有更好、更合适的方法? 提前感谢您

  • 问题内容: 论坛成员 我在Java中遇到日期时间问题。实际上,我正在接收 格式为2012-02-27T01:10:10 的开始日期,并且我想将接收到的日期插入具有datetime数据类型的数据库中。 实际上,我尝试通过以下代码将收到的开始日期转换为日期时间 但是使用上面的代码,只有 日期被添加到我的数据库中,例如2012-02-27 00:00:00 我也想将时间添加到数据库中,但是当我将Simp

  • 问题内容: 如何在MySQL中转换为? 问题答案: 在MySQL中使用功能 请记住,如果使用的框架以毫秒为单位进行存储(例如Java的时间戳),则 必须除以1000 ,以秒为单位获取正确的Unix时间。

  • 问题内容: 我想将日期转换为时间戳,我的输入是。我用了 上面写着NaN ..有人能告诉你如何转换吗? 问题答案: var myDate = “26-02-2012”; myDate = myDate.split(“-“); var newDate = myDate[1]+”,”+myDate[0]+”,”+myDate[2]; console.log(new Date(newDate).getTi

  • 问题内容: 我有如下代码所示的变量。 使用python,如何将其转换为以下格式? 问题答案: import datetime >>> d = datetime.datetime.strptime(‘2011-06-09’, ‘%Y-%m-%d’) >>> d.strftime(‘%b %d,%Y’) ‘Jun 09,2011’ 在2.5版之前的Python中,您可以使用替换为,(这样(未测试)):