有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想将deserializeJSON对象转换成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"

共 (1) 个答案

  1. # 1 楼答案

    你的预期结果

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

    根本不是JSON格式,所以JSON格式化程序对您没有帮助。要将OffsetDateTime解析为所需格式,需要使用DateTimeFormatter类。但是,如果您有一个具有类型为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;