Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将double序列化为int_Java_Json_Serialization_Jackson - Fatal编程技术网

Java 将double序列化为int

Java 将double序列化为int,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我有一个像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; }

我有一个像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字符串时,其中的数量是500,那么结果是500.0。我想得到500而不是500.0

一种解决方案是将其类型更改为int,但是我不能修改该类


我可以知道如何使用Jackson library做到这一点吗?

您还有另一个选择,它不是很干净(老实说,我希望听到比这更干净的解决方案)


现在,您可以在设置数量后序列化FooDTO。(请为您的其他属性添加getter和setter。

查看此页面以获取有关创建自定义序列化程序的演示:

一个可能的解决方案是为Double.class创建一个自定义序列化程序,它可以在适当的情况下将一个整数传递给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);
}

但是
500
500.0
。你的问题没有意义。当你反序列化你的pojo类的对象时,这些对象有两个字段。因此,值将变成一个双字段。因此:不清楚你在问什么。没有库来做你要求做的事情,因为大多数情况下,它没有任何意义。您将获得序列化的对象。然后,您可以对其执行任何操作,包括在需要时强制转换值。您是否只希望将此数字打印/显示为“500”?这是一个数字如何表示的问题?也许混淆是因为他在谈论反序列化,但似乎他真的在谈论序列化到JSON。
@Override
public void serialize(Double value, JsonGenerator gen, SerializerProvider provider) throws IOException {
    if (value.intValue() == value)
        gen.writeNumber(value.intValue());
    else
        gen.writeNumber(value);
}