【发布时间】:2019-10-11 05:34:50
【问题描述】:
如果我在实体类中使用 LocalDate 类型,如果我发送 POST 请求,则会收到以下错误:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.LocalDate` (no Creators, like default construct, exist): no String-argument constructor/factory method to deserialize from String value ('1977-01-01')
at [Source: (io.undertow.servlet.spec.ServletInputStreamImpl); line: 1, column: 533]
如果我从
更改我的属性类型@JsonbDateFormat("yyyy-MM-dd")
private java.time.LocalDate mydate;
到
@JsonbDateFormat("yyyy-MM-dd")
private java.util.Date mydate;
有效!
我已经使用 Wildfly 15 和 16(Eclipse Yasson 实现)进行了测试,新的 Java 日期类似乎不适用于 JSON-Bindings。
这是不支持还是我有什么问题?
【问题讨论】:
-
您是如何尝试解析对象的?杰克逊是个例外,但你提到了亚森。我使用了
JsonbBuilder,它对我有用。 -
我这样注释我的方法:
@POST @Consumes(MediaType.APPLICATION_JSON) public Response add(@Valid Customer newCustomer, @Context UriInfo uriInfo) { ... }。不应该被wildfly服务器的框架自动解析吗?它与 java.util.Date 类似。 -
需要注意的是,这里没有使用 Yasson,而是使用了 Jackson。我更改了测试以使用类似的参数,它似乎对我有用。您是否碰巧拥有某种复制器?
-
我的客户实体使用 javax.xml.bind.annoation.XmlRootElement 进行了注释。如果我从客户实体中删除此注释,它将起作用:-)
标签: json wildfly localdate jsonb-api yasson