问题 Jackson mixin注释包含某些属性并排除其他所有内容


我有一个第三方域对象,我希望使用Jackson序列化为JSON。通过公共getter可以访问很多属性,但我只对这些属性中的一小部分感兴趣。由于这是第三方对象,我选择了mixin路线。但是,除了在mixin界面上定义的类之外,我找不到从原始类中排除所有内容的好方法。我试图在mixin类上指定@JsonIgnoreProperties,但它很快就会失控,需要忽略大量属性。有任何变通方法吗?

提前致谢!

编辑:添加一些代码

public class SpecialObject {
private String name;
private Integer id;
public String getName() {
    return name;
}
public Integer getId() {
    return id;
}
public String getFoo() {
    return "foo";
}
}

public interface SpecialObjectMixin {
    @JsonProperty
    String getName();
}

我希望我只能在序列化的JSON中获得名称。顺便说一下,我正在使用这个来通过cxf-jaxrs与杰克逊作为提供者进行休息。


6707
2018-01-30 15:20


起源



答案:


想出办法

@JsonAutoDetect(getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE)
public interface SpecialObjectMixin {

    @JsonProperty
    String getName();
}

13
2018-01-30 16:03



+1有一些很好的例子,说明如何在全局范围内应用这些设置 ObjectMapper 这里: stackoverflow.com/q/7105745/1756430。 - Sam Berry


答案:


想出办法

@JsonAutoDetect(getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE)
public interface SpecialObjectMixin {

    @JsonProperty
    String getName();
}

13
2018-01-30 16:03



+1有一些很好的例子,说明如何在全局范围内应用这些设置 ObjectMapper 这里: stackoverflow.com/q/7105745/1756430。 - Sam Berry