【问题标题】:JAXB: How to make EntityHolder work with JSON requestJAXB:如何使 EntityHolder 处理 JSON 请求
【发布时间】: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。

标签: java xml json jaxb


【解决方案1】:

我遇到了同样的问题。

我没有找到好的但实用的解决方案。

您可以使用@Context 注入请求并像这样获取正文内容。

因此,您可以使用 jackson、gson 或您喜欢的实现来解组它们。

这不是最好的解决方案,但它可以帮助你。

【讨论】:

  • 感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
相关资源
最近更新 更多