alibaba / fastjson2

🚄 FASTJSON2 is a Java JSON library with excellent performance.
Apache License 2.0
3.82k stars 499 forks source link

[BUG] 子类对象无法反序列化 #567

Closed leshalv closed 8 months ago

wenshao commented 2 years ago

能提供重现问题的testcase么?

leshalv commented 2 years ago
package com.example.fastjson2;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONWriter;
import lombok.Data;
import lombok.EqualsAndHashCode;

@Data
public class Test {

    private Config config;

    @Data
    public static class Config{

    }

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class CatConfig extends Config{
        private String height;
        private String width;
    }

    public static void main(String[] args) {
        CatConfig catConfig = new CatConfig();
        catConfig.setHeight("200");
        catConfig.setWidth("100");
        Test test = new Test();
        test.setConfig(catConfig);
        String json = JSON.toJSONString(test, JSONWriter.Feature.WriteClassName);
        System.out.println(json);
        //JSON结果 {"@type":"com.example.fastjson2.Test","config":{"@type":"com.example.fastjson2.Test$CatConfig","height":"200","width":"100"}}
        Test t = (Test) JSON.parseObject(json, Test.class);
        System.out.println(t.getConfig());
        //对象结果:Test.Config() 
    }
}

fastjson1 版本是可以的,fastjson2 不可以,升级失败!

wuyuweixin commented 2 years ago

+1

wuyuweixin commented 2 years ago

+1

leshalv commented 2 years ago

这个BUG大概什么版本可以修复? @wenshao

wenshao commented 2 years ago

这个BUG大概什么版本可以修复? @wenshao

问题无法重现哦,你用2.0.11版本再试试看?

leshalv commented 2 years ago

这个BUG大概什么版本可以修复? @wenshao

问题无法重现哦,你用2.0.11版本再试试看?

升级版本,并不可以。

image
leshalv commented 2 years ago

这个bug还有希望吗?

dujie-js commented 2 years ago

这个不应该复现不了呀,粘贴下来直接运行就是异常的情况

leshalv commented 2 years ago

@wenshao 在艾特一下温老板。

dujie-js commented 2 years ago

@wenshao 在艾特一下温老板。

追加一张楼主提供case的运行截图,用的2.0.15版本 image

leshalv commented 1 year ago

@wenshao 在艾特一下温老板

wenshao commented 8 months ago

@leshalv 问题没重现,你能用最新版本2.0.47再验证下么?

leshalv commented 8 months ago

@leshalv 问题没重现,你能用最新版本2.0.47再验证下么?

还是不可以,我用了2.0.47

wenshao commented 8 months ago

要手动加上 SupportAutoType

Bean t = (Bean) JSON.parseObject(json, Bean.class, JSONReader.Feature.SupportAutoType);

看这个文档 https://github.com/alibaba/fastjson2/wiki/fastjson2_autotype_cn