我目前正在寻找一种以多种方式序列化对象的方法,而又不直接干扰类。(如添加大量注释)
想象一个这样的类:
class User {
String id;
String name;
String email;
...
User manager;
}
Run Code Online (Sandbox Code Playgroud)
它SimplePropertyFilter提供了几乎所需的功能,但是问题在于此过滤器会忽略当前对象的级别,并在每个对象上应用所有已定义的过滤器,无论它是否嵌套。
我不仅限于过滤器,但我想避免为每个所需的json响应编写多个类。有没有办法用Jackson2实现这种行为?
如果我们想序列化一个编辑表单,我们需要所有字段,但是对于用户列表,我们可能只需要其中一些字段。
但是对于经理,我们总是需要“仅” id和name。这就是寻找解决方案的地方。
JSON输出应如下所示:
{
"id" : "20",
"login" : "USER20",
"name" : "User 20",
"email" : "user20@no.where",
"manager" : {
"id" : "1",
"name" : "Administrator"
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得属性过滤器方法使我非常接近所需的解决方案,但是从我发现的结果来看,您只能定义“简单”属性。
public class UserJsonWriter {
public String toJson() {
SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.filterOutAllExcept("id", "login", "name", "email", "manager");
// Unfortunatly I cannot write:
SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.filterOutAllExcept("id", "login", "name", "email", …Run Code Online (Sandbox Code Playgroud)