fastjson 中的 deserialize = false 不起作用

阿影 发布于 2014/01/14 15:16
阅读 932
收藏 0

@wenshao

场景:

TopClass:

public abstract class TopClass<ID extends Serializable, T> implements TopInterface<ID, T> {
    
    private ID id;

    public ID getId() {
        return id;
    }

    public void setId(ID id) {
        this.id = id;
    }
}

MiddleClass:

public abstract class MiddleClass extends TopClass<Long, ActualClass> {
    ...
}

ActualClass:

public class ActualClass extends MiddleClass {
...
}

ActualClass instance = new ActualClass();

...

String json = JSON.toJSONString(instance);

ActualClass target = JSON.parseObject(json, ActualClass.class);

exception: Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

生成JSON字符串是没有问题的,但是反序列化为对象的时候,id 值被反序化为 Integer,setId(Long)其他应该是 Long 型,我在 ActualClass 重写 setId 方法,加上 @JSONField(deserialize = false) 也无效,同样的会去调用。

加载中
0
郭洪君
郭洪君
也遇到了同样的问题,没有找到方案哈。
返回顶部
顶部