gpt4 book ai didi

java - 如何在Java中使用JacksonJSONProvider ObjectMapper()类?

转载 作者:行者123 更新时间:2023-11-30 05:35:58 26 4
gpt4 key购买 nike

我想将 OffsetDateTime JSON 对象反序列化ISO8601 格式

我已经通过 swagger-code-gen 生成了 JacksonJSONProvider 类,但我无法弄清楚如何使用类...

这是该类的代码


@Provider
@Produces({MediaType.APPLICATION_JSON})
public class JacksonJsonProvider extends JacksonJaxbJsonProvider {

public JacksonJsonProvider() {

ObjectMapper objectMapper = new ObjectMapper()
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.registerModule(new JavaTimeModule())
.setDateFormat(new RFC3339DateFormat());

setMapper(objectMapper);
}
}

实际结果

"offset": {
"totalSeconds": 19800,
"id": "+05:30",
"rules": {
"transitions": [],
"transitionRules": [],
"fixedOffset": true
}
},
"year": 2006,
"month": "NOVEMBER",
"monthValue": 11,
"dayOfMonth": 8,
"hour": 15,
"minute": 57,
"second": 0,
"nano": 0,
"dayOfWeek": "WEDNESDAY",
"dayOfYear": 312

预期结果

"2006-11-08T21:27:00.000+0000"

最佳答案

您的预期结果

"2006-11-08T21:27:00.000+0000"

根本不是 JSON 格式,因此 JSON 格式化程序无法帮助您。要将 OffsetDateTime 解析为您想要的格式,您需要使用 DateTimeFormatter类(class)。但是,如果您的类具有 OffsetDateTime 类型的成员,并且您希望将整个类序列化为 JSON,那么这里是为您提供正确答案的问题的链接:Spring Data JPA - ZonedDateTime format for json serialization 。基本上解决方案看起来像

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy HH:mm:ss.SSSZ", locale = "en")
private OffsetDateTime myTime;

关于java - 如何在Java中使用JacksonJSONProvider ObjectMapper()类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56624969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com