使用Jackson序列化时,当字段a为false时,字段B将被忽略
public class MyClass { private boolean a; private int b; }
我还没有找到解决方案,尝试使用@JsonInclude(value = JsonInclude.Include.CUSTOM,valueFilter = AlarmConfig.TrueFilter.class)只对单个字段有效
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 { ... }
1条答案
按热度按时间ocebsuys1#
您可以创建自己的序列化器,类似于:
然后像这样使用它: