java Jackson全局转化long类型为String 排除IPage类属性不转换
时间: 2023-11-13 15:05:57 浏览: 119
毕业设计&课设-iPage是一个用于消息系统的轻量级java键值存储库。.zip
可以通过自定义Jackson的ObjectMapper来实现。具体实现如下:
1. 定义一个自定义的ObjectMapper,继承自Jackson的ObjectMapper:
```java
public class LongToStringObjectMapper extends ObjectMapper {
public LongToStringObjectMapper() {
SimpleModule module = new SimpleModule();
// 设置序列化规则,将Long类型转为String类型
module.addSerializer(Long.class, ToStringSerializer.instance);
module.addSerializer(Long.TYPE, ToStringSerializer.instance);
// 反序列化时不做任何操作
module.addDeserializer(Long.class, new JsonDeserializer<>() {
@Override
public Long deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
return p.getValueAsLong();
}
});
this.registerModule(module);
}
}
```
2. 在Spring Boot中配置这个自定义的ObjectMapper:
```java
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
LongToStringObjectMapper objectMapper = new LongToStringObjectMapper();
// 排除IPage类属性不转换
objectMapper.addMixInAnnotations(IPage.class, IgnoreLongTypeInPage.class);
return objectMapper;
}
@JsonFilter("ignoreLongTypeInPage")
interface IgnoreLongTypeInPage {}
}
```
在上面的代码中,我们通过@JsonFilter注解创建了一个名为ignoreLongTypeInPage的过滤器,在IPage类上使用该注解来标记需要排除的属性,即可实现全局转化long类型为String,但排除IPage类属性不转换。
阅读全文