|
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;
}
fastjson/src/main/java/com/alibaba/fastjson/parser/deserializer/DefaultFieldDeserializer.java
Lines 53 to 69 in 9b8b186
58 行可能通过 deserializeUsing 注解获取过字段上的 Codec , 在 67 行不应该暴力覆盖. 需要判断下当前是否有值,如果为 null 在覆盖.
用例 同
#3008