我无法弄清楚如何在我的POJO中将我的双精度序列化为int。目前,我在setter方法中进行转换。 double将始终介于0和1之间。以下是我的POJO中的getter和setter方法:
@JsonProperty("costMargin")
public int getCostMargin() {
return costMargin;
}
@JsonProperty("costMargin")
public void setCostMargin(double costMargin) {
this.costMargin = (int)(Math.round(costMargin * 100));
}
任何人都可以帮我弄清楚如何将这个double序列化为int,而无需在setter方法中进行转换?我试图研究其他方法,例如创建一个序列化器类,并在我的Pojo中包含一个注释。例如:@JsonSerialize(using = CustomDoubleSerializer.class)
答案 0 :(得分:0)
答案是:你不能这样做。
你必须通过截断或舍入某种方式将double转换为int。
在您的代码中,您只是违反了Java Bean规范。 Getter返回int,但Setter的参数为double。
如果是这样,你必须转换setter。否则你必须在调用setter之前在调用者中执行此操作。
答案 1 :(得分:0)
我最终使用了:
@JsonSerialize(using = CustomDoubleSerializer.class)
@JsonProperty("costMargin")
public int getCostMargin() {
return costMargin;
}
致电
public class CustomDoubleSerializer extends JsonSerializer<Double> {
@Override
public void serialize(Double value, JsonGenerator gen, SerializerProvider serializers)
throws IOException, JsonProcessingException {
gen.writeObject((int)(Math.round(value * 100)));
}
}
public class CustomDoubleSerializer扩展了JsonSerializer {