public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
@Override
public void serialize(LocalDateTime arg0, JsonGenerator arg1, SerializerProvider arg2) throws IOException {
arg1.writeString(arg0.toString());
}
}
public class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
@Override
public LocalDateTime deserialize(JsonParser arg0, DeserializationContext arg1) throws IOException {
return LocalDateTime.parse(arg0.getText());
}
}
随机事实:如果我嵌套了上述类,并且没有使它们成为静态的,那么错误消息很奇怪: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported
19条答案
按热度按时间dtcbnfnu16#
我在使用SpringBoot时也遇到了类似的问题。使用spring boot 1.5.1.release,我所要做的就是添加依赖项:
u0njafvf17#
此maven依赖项将解决您的问题:
我一直在努力的一件事是,对于zoneddatetime,在反序列化期间时区被更改为gmt。结果,默认情况下,jackson会用上下文中的一个替换它。。要保留区域1,必须禁用此“功能”
zqdjd7g918#
如果您使用的是fasterxml的objectmapper类,默认情况下objectmapper不理解localdatetime类,因此,您需要在gradle/maven中添加另一个依赖项:
现在您需要将此库提供的数据类型支持注册到objectmapper对象中,这可以通过以下方法完成:
现在,在jsonstring中,您可以轻松地将java.localdatetime字段如下所示:
通过执行所有这些操作,json文件到java对象的转换将正常工作,您可以通过以下方式读取文件:
gv8xihay19#
更新:出于历史原因留下这个答案,但我不建议这样做。请看上面接受的答案。
告诉jackson使用自定义[反]序列化类进行Map:
提供自定义类:
随机事实:如果我嵌套了上述类,并且没有使它们成为静态的,那么错误消息很奇怪:
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported