我有像POJO一样的
public class Foo {
private double amount;
private String message;
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
当我使用Jackson将这个Foo对象序列化为JSON String时,其数量为500,那么它将以500.0的形式出现。我想获得500而不是500.0。
一种解决方案是将其类型更改为int,但是我无法修改该类。
我可以知道如何使用杰克逊图书馆这样做吗?
答案 0 :(得分:1)
你有另一个选择,这不是很干净(诚实,我希望听到比这更清洁的解决方案);
public class FooDTO {
private int amount;
public int getAmount() {
return amount;
}
public void setAmount(double amt) {
amount = (int) amt;
}
}
现在您可以在设置金额后序列化FooDTO。 (请为其他属性添加getter和setter。
答案 1 :(得分:1)
查看此页面以获取有关创建自定义序列化程序的演示:
http://www.baeldung.com/jackson-custom-serialization
一种可能的解决方案是为Double.class创建一个自定义序列化程序,它可以选择将Integer传递给JsonGenerator。
我已经对此进行了测试并发现它可以正常工作:
@Override
public void serialize(Double value, JsonGenerator gen, SerializerProvider provider) throws IOException {
if (value.intValue() == value)
gen.writeNumber(value.intValue());
else
gen.writeNumber(value);
}