与这个班级:
public class Products implements Serializable {
private BigDecimal productId;
private float priority;
public float getPriority() {
return priority;
}
public void setPriority(float priority) {
this.priority = priority;
}
}
Run Code Online (Sandbox Code Playgroud)
在对此类JSON数据进行反序列化时:
{"productId":47552,"priority":78}
Run Code Online (Sandbox Code Playgroud)
得到此错误:
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"])
Run Code Online (Sandbox Code Playgroud)
但是对于这个数据(优先值周围的报价)
{"productId":47552,"priority":"78"}
Run Code Online (Sandbox Code Playgroud)
效果很好,所以杰克逊(1.9.9)似乎不尊重数值?我怀疑这里出了点问题.
您将字段优先级声明为float类型,并尝试反序列化包含int值的Json.杰克逊试图调用一个接受整数值的setter函数.所以我们需要添加一个这样的setter.
public void setPriority(int priority){
this.priority = Float.valueOf(priority);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11216 次 |
| 最近记录: |