jackson@jsonignoreproperties不处理引用的类属性?

ylamdve6  于 2021-07-05  发布在  Java
关注(0)|答案(2)|浏览(338)

我想做一个模型( Request )类,该类将忽略它引用的嵌套类的属性。我被告知我不能修改引用的模型( User )无论如何,我试着忽略它的属性 Request 模型。

@Data
@Builder
public class Request {
  @JsonIgnoreProperties(value = {"id"})
  User user;
}

// class I cannot modify
@Data
@Builder
public class User {
  String id;
  String name;
  ...
}

在有效负载中,我仍然看到id序列化和反序列化,因此注解显然不起作用。如果我把它放在一个班级的水平上,它似乎工作得很好 User 但既然我不能修改 User ,我也尝试过:

@JsonIgnoreProperties(value = {"user.id"})
public class Request {
  User user;

以上都不起作用。医生说
从2.0开始,此注解可以应用于类和属性
我在一个springboot项目中使用jackson2.10.2。我错过了什么?

zf2sa74q

zf2sa74q1#

我正在运行此测试并运行:

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Request {
    @JsonIgnoreProperties("id")
    User user;
}

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {

    String id;
    String name;

}

public class TestClass {
    public static void main(String[] args) throws JsonProcessingException {
        ObjectMapper mapper= new ObjectMapper();

        final Request value = Request.builder()
            .user(User.builder()
                .id("qw423432")
                .name("asdasdjsadjasdasd")
                .build())
            .build();
        System.out.println(mapper.writeValueAsString(value));

        System.out.println(mapper.readValue("{\"user\":{\"id\": \"a\", \"name\":\"b\"}}", Request.class));
    }

}

你觉得你的测试有什么不同吗?

92dk7w1h

92dk7w1h2#

创建一个扩展用户的类,如下所示:

public class MyUser extends User {
    @JsonIgnore           
    String id;     
}

@Data
@Builder
public class Request {
  MyUser user;
}

相关问题