springboot fastjson 2.0.0版本代替EnumDeserializer类实现反序列化
时间: 2024-03-24 16:36:24 浏览: 125
在 Spring Boot 中,可以使用 fastjson 2.0.0 版本的 @JSONType 注解来代替 EnumDeserializer 类实现反序列化。具体做法如下:
1. 在枚举类中使用 @JSONType 注解,指定反序列化时使用的类:
```
@JSONType(deserializer = MyEnumDeserializer.class)
public enum MyEnum {
// 枚举值
}
```
2. 编写 MyEnumDeserializer 类,实现反序列化逻辑:
```
public class MyEnumDeserializer implements ObjectDeserializer {
@Override
public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) throws IOException, JSONException {
// 反序列化逻辑
}
@Override
public int getFastMatchToken() {
return 0;
}
}
```
3. 在反序列化时,fastjson 会自动调用 MyEnumDeserializer 中的 deserialze 方法。
注意,以上代码只是一个示例,具体实现需要根据业务逻辑进行调整。
相关问题
springboot fastjson 2.0.0版本 反序列化配置
在Spring Boot中使用fastjson 2.0.0版本时,可以通过配置文件或代码方式来设置反序列化配置。以下是常见的配置方式:
1. 配置文件方式
在application.properties或application.yml文件中添加如下内容:
```
# 开启AutoType功能
spring.fastjson.parser.autoTypeSupport=true
# 关闭ASM功能
spring.fastjson.parser.asmEnable=false
```
2. 代码方式
在Spring Boot的启动类中,可以通过重写configureMessageConverters方法来设置fastjson的反序列化配置,例如:
```
@Configuration
public class FastJsonConfig extends WebMvcConfigurationSupport {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
// 开启AutoType
config.setAutoTypeSupport(true);
// 关闭ASM
config.setASMEnable(false);
converter.setFastJsonConfig(config);
converters.add(converter);
}
}
```
注意,Spring Boot默认使用Jackson作为JSON处理库,如果想要使用fastjson,则需要排除Jackson并添加fastjson依赖,例如:
```
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</exclusion>
</exclusions>
</dependency>
```
以上是一些常见的反序列化配置方式,具体的配置应该根据具体情况进行选择和设置,以确保安全和性能。建议仔细阅读fastjson的官方文档,并参考相关的安全规范和最佳实践。
fastjson 2.0.0版本 反序列化配置
fastjson 2.0.0版本提供了多种反序列化配置,可以通过配置来控制反序列化的行为,以增强安全性和灵活性。以下是常见的反序列化配置:
1. AutoType:开启该配置后,fastjson将支持反序列化任何Java类,包括未知的、不在白名单中的类。这个配置存在安全隐患,因为攻击者可以通过构造恶意的JSON字符串来执行任意代码。因此,建议仅在必要时才开启该配置,并通过白名单过滤掉非法类。
2. ParserConfig:该配置用于管理反序列化时的解析器配置,包括白名单、黑名单、自定义反序列化器等。通过ParserConfig可以实现更精细的反序列化控制。
3. Feature:该配置用于开启或关闭fastjson的一些特性,如自动类型匹配、允许注释、允许单引号等。通过Feature可以灵活地控制反序列化的行为。
4. ASM:该配置用于开启或关闭fastjson的ASM字节码增强功能,以提高反序列化性能。默认情况下,fastjson会尝试使用ASM来优化反序列化代码,但在某些环境下可能会造成兼容性问题。
5. SerializeConfig:该配置用于序列化时的配置管理,包括白名单、黑名单、自定义序列化器等。通过SerializeConfig可以实现更精细的序列化控制。
这些配置可以通过调用JSON类的静态方法来设置,例如:
```
JSON.DEFAULT_PARSER_FEATURE |= Feature.AutoCloseSource.getMask();
JSON.DEFAULT_PARSER_FEATURE &= ~Feature.UseBigDecimal.getMask();
```
注意,反序列化配置应该根据具体情况进行选择和设置,以确保安全和性能。建议仔细阅读fastjson的官方文档,并参考相关的安全规范和最佳实践。
阅读全文
相关推荐















