由于某种原因,注释@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
}
是否有人知道为什么注释在我的示例中不起作用?
答案 0 :(得分:1)
虽然,你得到了解决方案,但为了将来参考,我写了这个答案。
正如@JB Nizet在评论中指出的那样,你并没有使用杰克逊代替MOXy。并且,根据 Jersey Documentation
下面列出的模块提供对JSON表示的支持 将个人JSON框架集成到Jersey 。现在, Jersey集成了以下模块以提供JSON支持:
MOXy
JSON处理的Java API(JSON-P)
杰克逊
抛弃
因此,您需要删除MOXy库才能解决此问题。