我Jackson用来将JSON反序列化为不可变的自定义Java对象。这是课程:
final class DataPoint {
private final int count;
private final int lower;
private final int median;
private final int upper;
@JsonCreator
DataPoint(
@JsonProperty("count") int count,
@JsonProperty("lower") int lower,
@JsonProperty("median") int median,
@JsonProperty("upper") int upper) {
if (count <= 0) {
throw new IllegalArgumentException("...");
}
this.count = count;
this.lower = lower;
this.median = median;
this.upper = upper;
}
// getters...
}
Run Code Online (Sandbox Code Playgroud)
这是我反序列化的JSON:
{
"count": 3,
"lower": 2,
"median": 3,
"upper": 4
}
Run Code Online (Sandbox Code Playgroud)
工作正常。现在,我断开JSON,即重复lower属性:
{
"count": 4, …Run Code Online (Sandbox Code Playgroud) 我Jackson用来将 JSON 反序列化为不可变的自定义 Java 对象。这是课程:
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...
}
Run Code Online (Sandbox Code Playgroud)
这是我反序列化的 JSON:
{
"count": 1,
"median": 2
}
Run Code Online (Sandbox Code Playgroud)
它工作正常。现在我打破了 JSON,即用median小数替换整数:
{
"count": 1,
"median": 0.1
}
Run Code Online (Sandbox Code Playgroud)
现在我得到count == 1, 和median == 0。相反,我希望 Jackson 无法反序列化,因为 JSON 属性的数据类型median …