【发布时间】:2014-10-20 11:45:35
【问题描述】:
创建 api 调用如下所示:
@POST
@Path("/create")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Response createEntity(EntityHolder<Entity> entity){}
如果发送 xml 请求,它可以正常工作,但如果是 Json 有效负载,它会抛出
ERROR - caught an UnrecognizedPropertyException in the REST layer
21:35:36,836 INFO [stdout] (http-/0.0.0.0:8080-1) com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "someProperty" (class com.sun.jersey.core.provider.EntityHolder), not marked as ignorable (0 known properties:
看起来杰克逊将 EntityHolder 与实际的 Entity 类混淆了。
【问题讨论】:
-
是的。如果您注意堆栈跟踪。 jackson 正在考虑将
EntityHolder视为实际的Entity类。 -
对。这意味着杰克逊找不到 EntityHolder 类的
someProperty。而不是那个杰克逊应该尝试在Entity类中找到someProperty。不是吗? -
对。我明白你的意思。很抱歉,我将删除所有令人困惑的 cmets。