fastjson库的2.0.0版本 ContextObjectDeserializer 接口没有
时间: 2023-12-13 14:03:09 浏览: 56
非常抱歉,我的回答还有误。在 Fastjson 2.0.0 版本中,确实没有 ContextObjectDeserializer 接口。
如果要在 Fastjson 2.0.0 版本中代替 EnumDeserializer 类,可以使用 ObjectDeserializer 的替代方案:PropertyProcessable 接口。具体来说,可以自定义实现一个 Deserializer,实现 PropertyProcessable 接口,并在实现方法中对枚举类型进行反序列化操作。例如:
```
public class MyEnumDeserializer implements PropertyProcessable {
@Override
public void process(DefaultJSONParser parser, Object object, String name, Type type, Map<String, Object> fieldValues) {
// 判断是否是枚举类型
if (type instanceof Class && ((Class<?>) type).isEnum()) {
// 获取枚举类
Class<Enum> clazz = (Class<Enum>) type;
// 读取枚举值
Object value = parser.parse();
// 根据枚举值设置对象的属性值
fieldValues.put(name, Enum.valueOf(clazz, value.toString()));
} else {
// 其他类型交给默认的反序列化器处理
fieldValues.put(name, parser.parseObject(type));
}
}
}
```
然后,可以在代码中使用这个自定义的 Deserializer:
```
JSON.parseObject(jsonString, type, new MyEnumDeserializer());
```
其中,type 是需要反序列化的类型。这样就可以实现对枚举类型的反序列化操作了。
阅读全文