Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未调用Json LocalDate反序列化程序 未调用LocalDateDeserializer。_Java_Json_Serialization_Jackson - Fatal编程技术网

Java 未调用Json LocalDate反序列化程序 未调用LocalDateDeserializer。

Java 未调用Json LocalDate反序列化程序 未调用LocalDateDeserializer。,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我决定将我的日期对象传输到前端,从epoch开始,传输时间为毫秒。我已经编写了一个序列化程序将LocalDate对象转换为自epoch以来的长毫秒,并编写了一个反序列化程序将从json获得的长值转换回LocalDate 在客户端,我根据这个值创建了一个JS Date对象,并将日期对象转换回毫秒,因为我想将对象发送回服务器 序列化程序和反序列化程序 问题 序列化程序按其应有的方式调用,但反序列化程序不是。我得到了这个错误: nested exception is com.fasterxml.jac

我决定将我的日期对象传输到前端,从epoch开始,传输时间为毫秒。我已经编写了一个序列化程序将LocalDate对象转换为自epoch以来的长毫秒,并编写了一个反序列化程序将从json获得的长值转换回LocalDate

在客户端,我根据这个值创建了一个JS Date对象,并将日期对象转换回毫秒,因为我想将对象发送回服务器

序列化程序和反序列化程序 问题 序列化程序按其应有的方式调用,但反序列化程序不是。我得到了这个错误:

nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class java.time.LocalDate] from String value ('-30610224561000'); no single-String constructor/factory method
补充资料 我没有使用JavaTimeModule,因为我使用的是旧版本的Jackson,以便与其他依赖项保持兼容

我试图不使用注释,因为域模型位于一个单独的maven模块中,并试图对其进行尽可能小的更改


如果您需要更多信息,请随时发表评论

我们面临着同样的问题。只有在显式添加@JsonDeserialize注释时,才会调用它。。这相当令人失望:)
public class LocalDateDeserializer extends JsonDeserializer<LocalDate> {
@Override
public LocalDate deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
    //Parsing json to LocalDate.
    Long sinceEpoch = Long.parseLong(jsonParser.getValueAsString());
    return Instant.ofEpochMilli(sinceEpoch).atZone(ZoneId.systemDefault()).toLocalDate();
}
@Bean
@Primary
public ObjectMapper jsonObjectMapper() {
    ObjectMapper objectMapper = new ObjectMapper();
    JSR310Module dateModule = new JSR310Module();
    dateModule.addSerializer(LocalDate.class, new LocalDateSerializer());
    dateModule.addDeserializer(LocalDate.class, new LocalDateDeserializer());
    SimpleModule valueTypeModule = new SimpleModule();
    valueTypeModule.addDeserializer(AbstractValueType.class, new ValueTypeDeserializer());
    objectMapper.registerModule(dateModule);
    objectMapper.registerModule(valueTypeModule);
    return objectMapper;
}
nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class java.time.LocalDate] from String value ('-30610224561000'); no single-String constructor/factory method