所以我有
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和其他内容,但似乎我的选项是在自定义类型(这是原始类型)或全局类型上。如何实现此自定义序列化?
答案 0 :(得分:2)
您可能想尝试@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中所述。