【问题标题】:jackson jboss eap6.1.1 annotations not working杰克逊 jboss eap6.1.1 注释不起作用
【发布时间】:2015-03-17 16:39:00
【问题描述】:

我一直试图让 Jackson 注释在 EAP 6.1.1 服务器上的 JBoss RestEasy 应用程序中工作。更准确地说,我想让JacksonPolymorphicDeserialization 像完成here 那样通过那里的注释工作。

现在看起来很简单,但由于某种原因它并没有真正起作用。 我得到以下代码:

package example.model;

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@type",visible = true)
@JsonSubTypes({@JsonSubTypes.Type(value = ImplementedRequest.class, name = "implementedrequest")})
public abstract class Request {

}

以及抽象类的实现:

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@type", visible = true)
public class ImplementedRequestextends Request {
    @NotEmpty
    private Person applicant;

    private List<AbstractApplicationPart> applications;

}

我创建了一个发出请求并处理请求的端点:

@Path("serviceRequest")
@Named("RequestResource")
@RequestScoped
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@ValidateRequest
@IgnoreMediaTypes(MediaType.APPLICATION_JSON)
public class RequestResource {
   public Boolean saveRequest( @Valid Request request, @Context HttpServletRequest req) throws JAXBException, AnError {
//Some awesome processing happens here
}
public Response getDummyData() {
// Creates and fills the ImplementedRequestextends
return result;
}
}

现在我还做了一些配置,并确保在 Jboss 中加载 Jackson 模块和战争部署。并确保在我的 pom 中我有与模块相同的版本。

我现在的期望是,如果我打电话,我会得到如下信息:

{
    "applicant": { "name":"Dummy data", "age":31},
    "applications": [ {"sport":"soccer"},{"sport":"judo"}    ]
}

我希望得到一个带有 implementedrequest 字段的 @type 名称。这是我的第一次尝试;最终我也想让抽象数组像这样工作。但我什至无法让它工作。

【问题讨论】:

标签: java annotations jackson json-deserialization jboss-eap-6


【解决方案1】:

所以最后我发现出了什么问题。

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

是问题所在。 Jackson 有 2 个版本,两者都可以工作,但 JBoss EAP6.1.1 的默认版本是 1.X 分支,在 org.codehaus 下可用。两种方法都在核心下工作的问题。后来它被移到了不同​​的分支和工件。

【讨论】:

    猜你喜欢
    • 2016-09-25
    • 1970-01-01
    • 2011-03-08
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    相关资源
    最近更新 更多