所以我有
class Foo {
double bar = -30000.0
double baz = 200
}
-30000.0
实际上并不是一个有效值,它是硬件发出的默认值,实际上这应该是一个空值。我不想序列化这个值,相反,如果它是这个值,我想完全省略该键(如果我设置跳过空值,则方式相同)。问题是,baz 也可以是-30000.0,但它是有效的。实际上有更多的条件逻辑取决于字段/值,但这是最简单的示例。
我想写这个
class Foo {
@Skip30k
double bar = -30000.0
double baz = -30000.0
}
输出应该是
"{"baz":-30000.0}"
我已阅读 baeldung's post和其他东西,但我的选项似乎是自定义类型(这是原始类型)或全局类型。我怎样才能实现这个自定义序列化?
最佳答案
您可能想尝试@JsonInclude
:
@JsonInclude(value = JsonInclude.Include.CUSTOM,
valueFilter = Skip30kFilter.class)
private double bar;
public class Skip30kFilter {
@Override
public boolean equals(Object other) {
double value = (Double) other;
return value > -30000.0;
}
}
您还可以考虑自定义注释和序列化器,如本answer中所述。 .
关于java - 如何在 jackson 中跳过特定值的特定字段的序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56549369/