如何使Jackson忽略字段B的序列化,如果字段a是假时,序列化

jchrr9hc  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(85)

使用Jackson序列化时,当字段a为false时,字段B将被忽略

public class MyClass {
    private boolean a;
    private int b;
}

我还没有找到解决方案,尝试使用@JsonInclude(value = JsonInclude.Include.CUSTOM,valueFilter = AlarmConfig.TrueFilter.class)只对单个字段有效

ocebsuys

ocebsuys1#

您可以创建自己的序列化器,类似于:

public class MyClassSerializer extends JsonSerializer<MyClass> {

    @Override
    public void serialize(MyClass value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeStartObject();
        gen.writeBooleanField("a", value.isA());
        if (value.isA()) {
            gen.writeNumberField("b", value.getB());
        }
        gen.writeEndObject();
    }
}

然后像这样使用它:

@JsonSerialize(using = MyClassSerializer.class)
public class MyClass { ... }

相关问题