我無法弄清楚爲什麼當嘗試序列化一個對象時,我得到一個與反序列化相關的異常。我的目標有一個字段是喬達型LocalDateTime嘗試序列化時傑克遜反序列化異常
....
ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(response));
的我得到了以下異常:
org.codehaus.jackson.map.JsonMappingException:java.lang.String中不能轉換爲org。 joda.time.LocalDateTime
我想序列化。爲什麼它試圖將字符串值轉換爲對象?我試圖添加自定義的反序列化器,但它不起作用。
更新更多異常的:
org.codehaus.jackson.map.JsonMappingException:java.lang.String中不能轉換到org.joda.time.LocalDateTime(通過參考鏈:com.my .AcountDetailResponse [「registrationDate」]) at org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:218)〜[jackson-mapper-asl-1.9.13.jar:1.9.13] at org。 codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:183)〜[jackson-mapper-asl-1.9.13.jar:1.9.13] at org.codehaus.jackson.map.ser.std.SerializerBase。 wrapAndThrow(SerializerBase.java:140)〜[jackson-mapper-asl-1.9.1 3.jar:1.9.13] at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:158)〜[jackson-mapper-asl-1.9.13.jar:1.9.13] at org.codehaus.jackson.map。org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)〜[jackson-mapper-asl-1.9.13.jar:1.9.13] 。 ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)〜[jackson-mapper-asl-1.9.13.jar:1.9.13] at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java: 256)〜[jackson-mapper-asl-1.9.13.jar:1.9.13] at org.codehaus.jackson.map.ObjectMapper._configAndWriteValue(ObjectMapper.java:2575)〜[jackson-mapper-asl-1.9。 13.jar:1.9.13] at org.codehaus.jackson.map.ObjectMapper.writeValueAsString(ObjectMapper.java:2097)〜[jackson-mapper-asl-1.9.13.jar:1 .9.13]
嘗試添加解串器:
CustomDeserializerFactory deserializerFactory = new CustomDeserializerFactory();
deserializerFactory.addSpecificMapping(LocalDateTime.class, new CustomLocalDateTimeDeserializer());
ObjectMapper mapper = new ObjectMapper();
mapper.setDeserializerProvider(new StdDeserializerProvider(deserializerFactory));
try {
remoteActionDto.setPayload(mapper.writeValueAsString(response));
} catch (IOException e) {
logger.error("Can not convert response to json!", e);
.....
}
解串器本身。我並沒有真正轉換,而只是概念證明:
private static class CustomLocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
@Override
public LocalDateTime deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
return new LocalDateTime();
}
}
更多的代碼和更多的例外情況是不錯的。您是如何嘗試添加客戶(de)序列化器的?例外發生在哪裏? –
我添加了更多的信息,但是讓我瘋狂的東西是爲什麼當我嘗試做相反的事情時,它會嘗試將字符串轉換爲對象! – Nikolay