Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从Jackson JSON序列化中全局删除属性?_Java_Json_Jackson - Fatal编程技术网

Java 如何从Jackson JSON序列化中全局删除属性?

Java 如何从Jackson JSON序列化中全局删除属性?,java,json,jackson,Java,Json,Jackson,我有一个对象图,其中包含类型为Foo的子类对象(在本例中)。Foo类上有一个名为bar的属性,我不想用对象图序列化该属性。所以基本上我想要一种方式,每当你序列化一个Foo类型的对象时,输出除了bar之外的所有东西 class Foo { // this is an external dependency public long getBar() { return null; } } class Fuzz extends Foo { public long getBiz() {

我有一个对象图,其中包含类型为Foo的子类对象(在本例中)。Foo类上有一个名为bar的属性,我不想用对象图序列化该属性。所以基本上我想要一种方式,每当你序列化一个Foo类型的对象时,输出除了bar之外的所有东西

class Foo { // this is an external dependency
    public long getBar() { return null; } 
}

class Fuzz extends Foo {
    public long getBiz() { return null; }
}

public static void main(String[] args) {
    ObjectMapper mapper = new ObjectMapper();
    // I want to set a configuration on the mapper to
    // exclude bar from all things that are type Foo

    Fuzz fuzz = new Fuzz();
    System.out.println(mapper.writeValueAsString(fuzz));
    // writes {"bar": null, "biz": null} what I want is {"biz": null}
}
谢谢, 赎金

编辑:使用了StaxMan建议,包括我最终将使用的代码(为了示例起见,使bar成为getter)


除了
@JsonIgnore
@JsonIgnoreProperties
(特别是通过)之外,您还可以使用'@JsonIgnoreType'定义要全局忽略的特定类型。对于第三方类型,这也可以作为混合注释应用。

这可能是我的无知,但如何将标记栏标记为瞬态呢?
interface Mixin {
    @JsonIgnore long getBar();
}

class Example {
    public static void main() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.getSerializationConfig().addMixInAnnotations(Foo.class, Mixin.class);
        Fuzz fuzz = new Fuzz();
        System.out.println(mapper.writeValueAsString(fuzz));
        // writes {"biz": null} whoo!
    }
}