Skip to content

[BUG]Feature.ErrorOnNotSupportAutoType在list场景下反序列化会报错的问题 #7730

Description

@JingkaiTang

问题描述

我们正在升级 fastjson2,发现Feature.ErrorOnNotSupportAutoType在list场景下反序列化会报错,而单个元素的则不会

环境信息

请填写以下信息:

  • 版本信息:fastjson 2.0.63 和 fastjson2 2.0.63 均复现

重现步骤

    public static void main(String[] args) {
        record Data(String id) {
        }
        JSONReader.Context context = JSONFactory.createReadContext(JSONReader.Feature.ErrorOnNotSupportAutoType);
        context.getProvider().addAutoTypeAccept("com.example.");

        // 单元素验证
        Data data = new Data("test-data");
        String jsonEl = JSON.toJSONString(data, JSONWriter.Feature.WriteClassName);
        System.out.println(jsonEl);
        Object objEl = JSON.parse(jsonEl, context);
        System.out.println(objEl);

        // list验证
        List<Data> list = List.of(data);
        String jsonLi = JSON.toJSONString(list, JSONWriter.Feature.WriteClassName);
        System.out.println(jsonLi);
        // 此处报错
        Object objLi = JSON.parse(jsonLi, context);
        System.out.println(objLi);
    }

输出

{"@type":"com.example.FastJsonTest$1Data","id":"test-data"}
Data[id=test-data]
[{"@type":"com.example.FastJsonTest$1Data","id":"test-data"}]
Exception in thread "main" com.alibaba.fastjson2.JSONException: autoType not support : com.example.FastJsonTest$1Data
	at com.alibaba.fastjson2.JSONReader.readObject(JSONReader.java:3746)
	at com.alibaba.fastjson2.JSONReader.readArray(JSONReader.java:4119)
	at com.alibaba.fastjson2.reader.ObjectReaderImplObject.readObject(ObjectReaderImplObject.java:293)
	at com.alibaba.fastjson2.JSON.parse(JSON.java:234)
	at com.example.FastJsonTest.main(FastJsonTest.java:28)

如果去掉Feature.ErrorOnNotSupportAutoType则list部分的反序列化是正常的

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions