gpt4 book ai didi

java - 使 Jackson 在反序列化期间无法将 double 转换为 int

转载 作者:搜寻专家 更新时间:2023-11-01 02:58:42 25 4
gpt4 key购买 nike

<分区>

我使用 Jackson 将 JSON 反序列化为不可变的自定义 Java 对象。这是类(class):

final class DataPoint {
private final int count;
private final int median;

@JsonCreator
DataPoint(
@JsonProperty("count") int count,
@JsonProperty("median") int median) {
if (count <= 0) {
throw new IllegalArgumentException("...");
}
this.count = count;
this.median = median;
}

// getters...
}

这是我反序列化的 JSON:

{
"count": 1,
"median": 2
}

它工作正常。现在,我打破 JSON,即将整数 median 替换为小数:

{
"count": 1,
"median": 0.1
}

现在,我得到 count == 1median == 0。相反,我希望 Jackson 反序列化失败,因为 JSON 属性 median 的数据类型和正式的 median 参数类型(int ) 不同,转换实际上会丢失数据。

反序列化代码如下:

String json = "..."; // the second JSON
ObjectMapper mapper = new ObjectMapper()
.enable(DeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIES)
.enable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
.enable(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE);
DataPoint data = mapper.readValue(json, DataPoint.class);

我可以让 Jackson 在将小数反序列化为整数时失败吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com