杰克逊@JsonIgnoreProperties不是在处理引用的类属性?



我正在尝试创建一个模型(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开始,此注释可以应用于类和属性

我在Spring Boot项目中使用Jackson 2.10.2。我错过了什么?

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

public class MyUser extends User {
@JsonIgnore           
String id;     
}
@Data
@Builder
public class Request {
MyUser user;
}

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

@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));
}
}

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

最新更新