【问题标题】:Trouble using Jackson annotations使用 Jackson 注释时遇到问题
【发布时间】:2014-04-05 17:54:41
【问题描述】:

我正在使用 JPA 编写一个 java EE 应用程序。为了方便 JSON 输出,我需要一些特定的 Jackson 注释。但是,我正在尝试的杰克逊注释似乎都不起作用。我想我在项目配置中做错了什么。我只是在构建路径中添加了三个包 jackson-annotations-2.2.3.jar、jackson-databind-2.2.3.jar 和 jackson-core-2.2.3.jar。代码确实可以编译并且注释被识别,但是它们不起作用。

我的ApplicationConfig 文件如下所示:

@javax.ws.rs.ApplicationPath("/")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<Class<?>>();
        try {
            Class jsonProvider = Class.forName("org.glassfish.jersey.jackson.JacksonFeature");
            resources.add(jsonProvider);
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        addRestResourceClasses(resources);
        return resources;
    }

    private void addRestResourceClasses(Set<Class<?>> resources) {
        // Many resources added here
    }
}

我做错了什么?

【问题讨论】:

    标签: hibernate jpa jackson jax-rs


    【解决方案1】:

    尝试使用 1.9 版本,它具有不同的包名称。显然 Glassfish 3 和 4 包括这个版本的杰克逊。 JBoss AS 7.1 也有类似的问题。

    如果您的项目使用 maven,您可以将其添加到您的 pom。

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
    

    或者你可以从here下载jar。

    【讨论】:

    • 这很好用。然而问题是我需要仅在 Jackson 2.0+ 中实现的注释。我搜索了有关如何升级的详细说明,但似乎没有一个教程有效。我没有使用 Maven。你有这方面的经验吗?
    • 你不能这样做,因为 Jersey 本身依赖于 Jackson 1.9。你到底想用 Jackson 2.0 做什么?
    • 那是我已经担心的。我正在尝试使用 JsonIdentityInfo 和 JsonIdentityReference 注释在我的 JSON 输出中以标识的形式发送被引用的对象作为 id 而不是完整的对象。我找不到使用 Jackson 1.9 的(干净的)方法来做到这一点..
    • 我认为(但我不确定)您可以使用另一个 JAX-RS 2.0 实现。 RESTEasy 3 使用 Jackso 2.3,请参阅 search.maven.org/…。也许您可以寻找一种将 JAX-RS 实现包含在您自己的 WAR 或 EAR 中的方法,或者您可以将当前的 WAR 或 EAR(使用 Jackson 2.0+)部署到 Wildfly 服务器,看看它是否在那里工作。
    • 这是另一个问题的材料。您能将此答案标记为正确吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多