Skip to content

[BUG] Dubbo 使用 Fastjson2.0.57 版本时提示 not support none-Serializable #3499

@CodePlayer

Description

@CodePlayer

问题描述

如下代码所示,Dubbo 使用 Fastjson 2.0.57 版本时提示报错:not support none-Serializable。
使用 Fastjson 2.0.56 及之前版本则一切正常。

环境信息

请填写以下信息:

  • OS信息: Windows 10
  • JDK信息:OpenJDK 17.0.14
  • 版本信息:Fastjson 2.0.57

重现步骤

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
static class Message<T> implements Serializable {

	T msg;

}

@Test
public void test() {
	Message<String> obj = new Message<>("Hello");
	byte[] bytes = JSONB.toBytes(obj, JSONWriter.Feature.WriteClassName,
			JSONWriter.Feature.FieldBased,
			JSONWriter.Feature.ErrorOnNoneSerializable,
			JSONWriter.Feature.ReferenceDetection,
			JSONWriter.Feature.WriteNulls,
			JSONWriter.Feature.NotWriteDefaultValue,
			JSONWriter.Feature.NotWriteHashMapArrayListClassName,
			JSONWriter.Feature.WriteNameAsSymbol);
	ContextAutoTypeBeforeHandler handler = new ContextAutoTypeBeforeHandler(true, obj.getClass());
	Object result = JSONB.parseObject(bytes, obj.getClass(), handler,
			JSONReader.Feature.UseDefaultConstructorAsPossible,
			JSONReader.Feature.ErrorOnNoneSerializable,
			JSONReader.Feature.IgnoreAutoTypeNotMatch,
			JSONReader.Feature.UseNativeObject,
			JSONReader.Feature.FieldBased);
}

期待的正确结果

一切正常

相关日志输出

com.alibaba.fastjson2.JSONException: not support none-Serializable

	at com.alibaba.fastjson2.reader.FieldReaderObject.readFieldValueJSONB(FieldReaderObject.java:185)
	at com.alibaba.fastjson2.reader.ObjectReaderAdapter.readFieldValue(ObjectReaderAdapter.java:506)
	at com.alibaba.fastjson2.reader.ORG_1_1_Message.readJSONBObject(Unknown Source)
	at com.alibaba.fastjson2.JSONB.parseObject(JSONB.java:569)

附加信息

如果将泛型 <T> 声明改为 <T extends Serializable>,就能够恢复正常。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions