This repository was archived by the owner on Oct 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
This repository was archived by the owner on Oct 23, 2024. It is now read-only.
[Bug] 泛型字段 deserializeUsing 失效 #3693
Copy link
Copy link
Closed
Description
fastjson/src/main/java/com/alibaba/fastjson/parser/deserializer/DefaultFieldDeserializer.java
Lines 53 to 69 in 9b8b186
public void parseField(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) { | |
if (this.fieldValueDeserilizer == null) { | |
getFieldValueDeserilizer(parser.getConfig()); | |
} | |
ObjectDeserializer fieldValueDeserilizer = this.fieldValueDeserilizer; | |
Type fieldType = fieldInfo.fieldType; | |
if (objectType instanceof ParameterizedType) { | |
ParseContext objContext = parser.getContext(); | |
if (objContext != null) { | |
objContext.type = objectType; | |
} | |
if (fieldType != objectType) { | |
fieldType = FieldInfo.getFieldType(this.clazz, objectType, fieldType); | |
fieldValueDeserilizer = parser.getConfig().getDeserializer(fieldType); | |
} | |
} |
58 行可能通过 deserializeUsing 注解获取过字段上的 Codec , 在 67 行不应该暴力覆盖. 需要判断下当前是否有值,如果为 null 在覆盖.
用例 同
#3008
public class OfficeBean<T> {
@JSONField(name = "Preference", deserializeUsing = PreferenceDeserializer.class)
private T preferenceBean;
}
Metadata
Metadata
Assignees
Labels
No labels