Java Jackson@JsonIgnoreProperties不是';不处理引用的类属性?
我试图创建一个模型(Java Jackson@JsonIgnoreProperties不是';不处理引用的类属性?,java,spring,jackson,Java,Spring,Jackson,我试图创建一个模型(Request)类,该类将忽略它引用的嵌套类的属性。我被告知,我不能以任何方式修改引用的模型(User),因此我试图从请求模型中忽略它的属性 @Data @Builder public class Request { @JsonIgnoreProperties(value = {"id"}) User user; } // class I cannot modify @Data @Builder public class User { Str
Request
)类,该类将忽略它引用的嵌套类的属性。我被告知,我不能以任何方式修改引用的模型(User
),因此我试图从请求
模型中忽略它的属性
@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。我缺少什么?创建一个扩展用户的类,如下所示:
public class MyUser extends User {
@JsonIgnore
String id;
}
@Data
@Builder
public class Request {
MyUser 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));
}
}
您认为您的测试有什么不同吗?我正在运行此测试,并且可以正常工作:
@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));
}
}
你觉得你的测试有什么不同吗?你对你的示例没问题,我正在运行相同的测试,它也可以工作,你能用
ObjectMapper mapper=new ObjectMapper()在main方法中尝试一个本地示例吗代码>和mapper.writeValueAsString(object)
@MarcoPens我做了Request Request=mapper.readValue(“{\'user\:{\'id\:{\'a\”,\'name\:\'b\”,Request.class)
和id
仍在进行反序列化。您对您的示例没有问题,我正在运行相同的示例,并且它可以正常工作,您可以使用ObjectMapper mapper=new ObjectMapper()在main方法中尝试一个本地示例吗代码>和mapper.writeValueAsString(object)
@MarcoPens我做了Request Request=mapper.readValue(“{\'user\:{\'id\:{\'a\”,\'name\:\'b\”,Request.class)代码>和id
仍在反序列化。我希望如此。但实际模型要大得多,不想复制整个类。我希望。但是实际的模型要大得多,不想复制整个类代码>打印?它打印此请求(user=user(id=null,name=b))
,这是您正在寻找的响应吗?我的打印请求(user=user(id=a,name=b))
…Lol你有没有仔细检查过你的jackson databind
和jackson core
是否在同一个2.10.2版本中使用?我刚刚用jackson 2.9.7
对它进行了测试,得到了与@Marco Pens相同的结果。你的系统.out.println(mapper.readValue(“{“user\:{“id\”::“a\”,“name\:“b\”),“Request.class))代码>打印?它打印此请求(user=user(id=null,name=b))
,这是您正在寻找的响应吗?我的打印请求(user=user(id=a,name=b))
…Lol您是否仔细检查了您的jackson数据绑定
和jackson core
是否在相同的2.10.2版本中使用?我刚刚使用jackson 2.9.7
对其进行了测试,得到了与@Marco Pens相同的结果。