有需求List类型的字段如果为null,输出为[],而非null,将String类型的字段如果为null,输出为"",而非null
于是添加了fastJsonConfig.setSerializerFeatures()拦截处理数据后@JsonProperty注解失效了如下
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY) //不返回给前端
解决办法:使用@JSONField注解如下
@JSONField(serialize = false) //不管这个字段有没有值都不返回给前端
具体添加的fastjson的代码:
package com.ruoyi.web; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import java.util.List; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class MvcConfig implements WebMvcConfigurer { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures( SerializerFeature.WriteNullStringAsEmpty, // 将String类型的字段如果为null,输出为"",而非null // SerializerFeature.WriteNullNumberAsZero, // 将Number类型的字段如果为null,输出为0,而非null SerializerFeature.WriteNullListAsEmpty, // 将List类型的字段如果为null,输出为[],而非null // SerializerFeature.WriteNullBooleanAsFalse, // 将Boolean类型的字段如果为null,输出为false,而非null SerializerFeature.DisableCircularReferenceDetect // 避免循环引用 ); // fastJsonConfig.setDateFormat("yyyy-MM-dd"); // 全局时间格式化为yyyy-MM-dd HH:mm:ss fastConverter.setFastJsonConfig(fastJsonConfig); converters.add(0, fastConverter); } }