我正在尝试创建一个模型(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));
}
}
你觉得你的测试有什么不同吗?