6

与这个类:

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"}

效果很好,所以杰克逊(1.9.9)似乎不尊重数值?我怀疑这里有问题。

4

2 回答 2

6

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

public void setPriority(int priority){
    this.priority = Float.valueOf(priority);
}
于 2013-05-24T18:16:42.437 回答
0

似乎您声明了优先级,并且 getter 和 setter 方法使用浮点数。你能检查一下吗

   public long getPriority() {
            return priority;
        }

        public void setPriority(long priority) {
            this.priority = priority;
        }
于 2012-08-30T12:15:03.773 回答