Java"Jackson"JsonMappingException:无法反序列化FIELD_NAME令牌中的浮动实例

Dfr*_*Dfr 6 java json jackson

与这个班级:

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)似乎不尊重数值?我怀疑这里出了点问题.

Man*_*dan 6

您将字段优先级声明为float类型,并尝试反序列化包含int值的Json.杰克逊试图调用一个接受整数值的setter函数.所以我们需要添加一个这样的setter.

public void setPriority(int priority){
    this.priority = Float.valueOf(priority);
}
Run Code Online (Sandbox Code Playgroud)