第一视角分析:
您的代码中存在一些问题。您提供的时间"/Date(1461208761970+0000)/"
看起来不熟悉。您也有一些代码问题。您的构造函数无法与 joda 构造函数正确对话
根本原因:
您的问题:
com.fasterxml.jackson.databind.JsonMappingException:类
com.fasterxml.jackson.datatype.joda.deser.DateTimeDeserializer 没有
默认(无参数)构造函数
是从您的代码生成的:
at br.com.soutsapp.user.souts.WCFClientTest.getPaymentHistoryTest(WCFClientTest.java:96)
问题分析:
将值反序列化为org.joda.time.DateTime
你必须定义@JsonDeserialize
因为杰克逊无法弄清楚使用了什么方法/构造函数org.joda.time.DateTime
从字符串值初始化它。
解决方案 - 1:
您需要使用序列化和反序列化。您应该检查 jar 可用性并应将读取类型设置为 JSON。
您可以按照以下 3 个步骤操作。
- 您需要使用序列化和反序列化。您的日期模式应类似于 Json 格式。
代码将是
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = DateTimeSerializer.class)
@JsonDeserialize(using = DateTimeDeserializer.class)
private DateTime paymentDate;
确保您在类路径上jackson-datatype-joda
.
-
将 SSM 配置更改为默认使用 JSON 格式(在
默认MemcachedClient定义):
<property name="defaultSerializationType" value="JSON" />
资源链接:
https://github.com/ragnor/simple-spring-memcached/issues/41 https://github.com/ragnor/simple-spring-memcached/issues/41
解决方案 - 2:
您还可以添加另一个构造函数。这可能会产生影响。
public PaymentHistoryItemApiResult() {
super();
}
资源链接:以下 2 个链接包含更多错误分析和解决方案
-
杰克逊例外——问题和解决方案 http://www.baeldung.com/jackson-exception
-
Jackson – JsonMappingException(找不到类的序列化器) http://www.baeldung.com/jackson-jsonmappingexception
另一个解决方案:
如果您不想使用反序列化,则可以按照以下详细信息进行操作:
@JsonDeserialize
期望一个JsonDeserializer
使用无参数构造函数。 DateTimeDeserializer 的最新版本没有这样的构造函数。
如果您已经修复了格式,即。 yourTimestamp 应该只是一个时间戳,那么你可以简单地注册JodaModule
与ObjectMapper
。它将在内部对 DateTime 字段使用 DateTimeDeserializer。您可以摆脱 @JsonDeserialize 注释。
mapper.registerModule(new JodaModule());
您需要添加jackson-datatype-joda
图书馆。
资源链接:
- joda.time.DateTime 反序列化错误 https://stackoverflow.com/questions/22643367/joda-time-datetime-deserialization-error
用于空值序列化和反序列化 https://stackoverflow.com/questions/25404703/how-to-deserialize-joda-datetime-using-jackson-with-jersey-2-client-in-spring-mv
如果不想序列化空值,可以在序列化时使用以下设置:
objectMapper.setSerializationInclusion(Include.NON_NULL);
对于反序列化,杰克逊理想情况下应该能够处理序列化输出中的空值。
信用归@jackall https://stackoverflow.com/users/2428558/jackall
或者你也可以在你的类中使用注释。
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(Include.NON_NULL)