与这个类:
public class Products implements Serializable {
private BigDecimal productId;
private float priority;
public float getPriority() {
return priority;
}
public void setPriority(float priority) {
this.priority = priority;
}
}
在对此类 JSON 数据进行反序列化时:
{"productId":47552,"priority":78}
出现这个错误:
org.codehaus.jackson.map.JsonMappingException:
Can not deserialize instance of float out of FIELD_NAME token
at [Source: org.apache.catalina.connector.CoyoteInputStream@103cf49; line: 1, \
column: 290] (through reference chain: entity.Products["priority"])
但是对于这个数据(围绕优先值引用)
{"productId":47552,"priority":"78"}
效果很好,所以 jackson (1.9.9) 似乎不尊重数值?我怀疑这里有问题。
最佳答案
您将字段优先级声明为 float 类型,并尝试反序列化包含 int 值的 Json。 Jackson 尝试调用一个接受整数值的 setter 函数。所以我们需要像这样添加一个 setter。
public void setPriority(int priority){
this.priority = Float.valueOf(priority);
}
关于Java "Jackson"JsonMappingException : Can not deserialize instance of float out of FIELD_NAME token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12196244/