@JsonIgnore无法正常工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@JsonIgnore无法正常工作相关的知识,希望对你有一定的参考价值。

由于某种原因,注释@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.hml:

<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
}

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

答案

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

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

下面列出的模块通过将各个JSON框架集成到Jersey中来提供对JSON表示的支持。目前,Jersey集成了以下模块以提供JSON支持:

  • 莫西
  • 用于JSON处理的Java API(JSON-P)
  • 杰克逊
  • 抛弃

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

以上是关于@JsonIgnore无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

无法从 onListItemClick 开始片段

使用片段共享过渡时返回过渡无法正常工作

OnClick 在片段的回收器适配器中无法正常工作

片段在较低版本的android中无法正常工作

后堆栈在 Jetpack Navigation 中无法正常工作

FragmentPagerAdapter在ViewPager中无法正常工作