@JsonIgnore无效

时间:2017-12-28 21:58:50

标签: java json maven jackson jersey

由于某种原因,注释@JsonIgnore在我的项目中不起作用。 我已经读过一些答案,这可能是由于使用不同的不兼容的Jackson版本(org.codehaus与com.fasterxml)造成的,但我只通过一个依赖(afaik)获取我的jackson库,所以这不应该是问题。

@Entity
@Table(name = "employee", schema = "klk")
public class Employee implements Serializable{
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue
    @Column(name = "id", unique = true, nullable = false)
    private Integer id;
    @Basic
    @Column(name = "firstName", nullable = false)
    private String firstName;
    @Basic
    @Column(name = "lastName", nullable = false)
    private String lastName;
    @Basic
    @Column(name = "password", nullable = false)
    @JsonIgnore
    private String password;
    @Basic
    @Column(name = "token", unique = true)
    @JsonIgnore
    private String token;

的pom.xml:

<dependencies>  
  <!-- https://mvnrepository.com/artifact/com.eclipsesource.jaxrs/jersey-all-->
    <dependency>
        <groupId>com.eclipsesource.jaxrs</groupId>
        <artifactId>jersey-all</artifactId>
        <version>2.22.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-moxy -->
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
        <version>2.26</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.39</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.eclipse.persistence/eclipselink -->
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.6.4</version>
    </dependency>

  </dependencies>

输出:

{
    "id":1,
    "firstName": "John",
    "lastName": "Doe",
    "password": "password",
    "token": "token
}

是否有人知道为什么注释在我的示例中不起作用?

1 个答案:

答案 0 :(得分:1)

虽然,你得到了解决方案,但为了将来参考,我写了这个答案。

正如@JB Nizet在评论中指出的那样,你并没有使用杰克逊代替MOXy。并且,根据 Jersey Documentation

  

下面列出的模块提供对JSON表示的支持   将个人JSON框架集成到Jersey 。现在,   Jersey集成了以下模块以提供JSON支持:

     
      
  • MOXy

  •   
  • JSON处理的Java API(JSON-P)

  •   
  • 杰克逊

  •   
  • 抛弃

  •   

因此,您需要删除MOXy库才能解决此问题。