gpt4 book ai didi

java - JSON -> 不可变的自定义 Java 对象。 JSON 中的数据不足

转载 作者:行者123 更新时间:2023-11-29 04:30:58 26 4
gpt4 key购买 nike

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

final class DataPoint {
private final int count;
private final double mean;

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

// getters...
}

这是我反序列化的 JSON:

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

它工作正常。现在我打破 JSON,即删除一个属性:

{
"count": 1
}

反序列化代码为:

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

现在我得到 count == 1mean == 0.0。相反,我希望 Jackson 抛出异常,因为 JSON 中缺少必填字段之一。我该如何存档?

非常感谢你们,伙计们!

最佳答案

由于您使用的是构造函数,因此可以启用 DeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIES在缺少属性时抛出异常:

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

关于java - JSON -> 不可变的自定义 Java 对象。 JSON 中的数据不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43799593/

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