Springboot没有为OffsetDateTime字段分配值

时间:2018-07-15 00:19:19

标签: java spring-boot jackson

我有一个带有OffsetDateTime字段的模型:

public class Todo {
    @ApiModelProperty(required = true, value = "")
    @JsonProperty("creationTime")
    @Getter
    @Setter
    OffsetDateTime creationTime;

    @ApiModelProperty(required = true, value = "")
    @JsonProperty("title")
    @Getter
    @Setter
    String title;

}

Springboot总是为creationTime字段分配一个空值。如果我不提供ISO861格式的日期时间,则会出现解析异常。

但是,在实现@JsonComponent类之后,我可以看到正在分配的值。

@JsonComponent
public class OffsetDateSerializer {
    public static class OffSetDateDeserializer extends JsonDeserializer<OffsetDateTime> {

        @Override
        public OffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
            System.out.println("Some");
            TreeNode treeNode = jsonParser.getCodec().readTree(jsonParser);

            TextNode textNode = (TextNode) treeNode;
            return OffsetDateTime.parse(textNode.asText());
        }
    }
}

这是怎么回事?

1 个答案:

答案 0 :(得分:0)

您应该为组件扫描配置OffsetDateSerializer的路径。 JsonComponentModule(org.springframework.boot.jackson)注册使用@JsonComponent注释的json bean。

@Configuration
@ComponentScan("your OffsetDateSerializer's path")
public class SerializerConfig {

}