当前位置: 首页 > 知识库问答 >
问题:

Jersey media moxy:APPLICATION_JSON忽略@XmlElement注释

段干博涉
2023-03-14

我正在创建一个REST-API与泽西。为此,我正在学习PluralSight课程。

我已经安装了Jersey 2.2和Jersey media moxy依赖项(v2.26)。我将返回以下资源以将其解析为JSON:

@XmlRootElement
public class Playlist {
    private int id;
    private String naam;
    private int eigenaarID;
    private Boolean owner;

    public void setData(int id, String naam, int eigenaarID) {
        this.id = id;
        this.naam = naam;
        this.eigenaarID = eigenaarID;

        if(eigenaarID == 0) {
            owner = false;
        } else {
            owner = true;
        }
    }

    @XmlElement(name="id")
    public int getID() {
        return id;
    }

    @XmlElement(name="name")
    public String getNaam() {
        return naam;
    }

    public Boolean getOwner() {
        if(eigenaarID == 0) {
            return false;
        }
        return true;
    }

    public ArrayList<Track> getTracks(){
        return new ArrayList<Track>();
    }
}

如果我输出XML(使用@products(MediaType.APPLICATION_XML)),则“getNaam”的属性将正确地重命名为“name”,而不是“naam”。当我输出JSON(@products(MediaType.APPLICATION_JSON))时,不仅我的属性没有被重命名,所有私有属性也都被输出。有什么问题?

共有2个答案

端木昱
2023-03-14

我最终使用了杰克逊。我用这个StackOverflow条目设置它。

我的应用程序如下:

package com.weijland.spotitube;
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;

@ApplicationPath("services")
public class MyApplication extends ResourceConfig {
    public MyApplication() {
        packages("org.glassfish.jersey.jackson.JacksonFeature");
    }
}

我最终使用了这种依赖关系:

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.2</version>
</dependency>
段干瑞
2023-03-14

您必须在@xmlement(name=“name”)中更改它。

 类似资料:
  • 我试图使用Jackson注释来重新命名序列化过程中产生的一些json标签。所有注释都编译得很好,当我运行时,除了所有Jackson注释之外,Jackson序列化工作完全被忽略。即使像@jsonignore或@jsonproperty这样的基本命令对json响应也没有影响。构建路径中的库有: 下面是我需要序列化的一个类的代码示例:

  • 有什么想法为什么@primary在这里没有被考虑在内吗?

  • 问题内容: 我的@Transactionnal注释似乎被忽略了。我对Spring容器的初始化没有任何错误。看来我的方法尚未被Spring TX框架代理。在执行服务的方法期间,JDBCTemplate会引发预期的RuntimeException。问题在于JDBC连接没有回滚,并且更改保持不变。stacktrace没有显示应该包装我的服务方法的代理的任何迹象。 编辑:添加了控制器的代码 编辑2:添加了

  • 我正在迁移一个应用程序从weblogic 10.3到weblogic 12.2。 我包括一个与其他项目共享的库。此jar包含一些带有@EJB注释的POJO,如下所示: 请注意,这只是一个POJO:它没有@无状态或@有状态注释。这个想法是,当我想使用这个服务时,我在另一个ejb-jar中用一个具体的@无状态Bean类扩展它。但是我只希望这个服务是我需要的,其他服务应该被视为POJOS。 在weblo

  • 问题内容: 我有一个实体,该实体与另一个用@Where注释的实体有关联,就像这样 最近不可避免的事情发生了,我需要加载不符合@Where子句的EntityB。我可以删除@Where批注,但是它使用很多,所以理想情况下,我不想这样做。除了手动加载EntityB列表之外,还有另一个查询,我还有哪些选择?我可以告诉Hibernate忽略@Where注释吗? 问题答案: 经过大量研究,这似乎是不可能的。我

  • 我对Jackson注释有一个问题,在《大部头1》中似乎被忽略了。我使用Jackson将REST响应序列化为JSON。我打开了设置: openejb。cxf。jax-rs.providers=org。科德豪斯。杰克逊。jaxrs。JacksonJsonProvider在系统中。属性 Jackson序列化工作正常,除了所有似乎被完全忽略的Jackson注释。事件像@JsonIgnore或@JsonPr