我有一个 RestEasyClient 必须反序列化一个有java.time.Instant
内部的对象。我尝试从 jsr310 注册新的 JavaTimeModule 但仍然出现错误:
ObjectMapper mapper = new ObjectMapper()
.registerModule(new JavaTimeModule());
ResteasyClient client = new ResteasyClientBuilder()
.register(mapper)
.build();
ResteasyWebTarget target = client.target(UriBuilder.fromPath(SERVICE_URL + "/api"));
错误:
无法构造 java.time.Instant 的实例:找不到合适的构造函数,无法从 Object 值反序列化(缺少默认构造函数或创建者,或者可能需要添加/启用类型信息?)
修改 Rest Server 以正确序列化 Instant 类后(例如:“fromTime”:1525681860)
新错误:
无法构造 java.time.Instant 的实例:没有从数字值反序列化的双/双参数构造函数/工厂方法 (1.52568186E9)
我设法模拟了这个:
ObjectMapper deserializer = new ObjectMapper()
.registerModule(new JavaTimeModule());
Instant probe = deserializer.readValue("1525681860", Instant.class);
System.out.println(probe);
如果我删除“registerModule”行,我会得到同样的错误。
因此,结论是 RestEasyClient 没有注册模块。我肯定做错了什么。