springboot返回值转成JSONString的处理

主要需求描述:有些返回值中的null需要转换成“”或[],另外有些返回值需要把null给屏蔽掉。
解决方法:
一(很lowb)

所有的返回值均采用string,在返回值之前,自己特殊处理成JSONString,然后返回给前端即可。

二(比较正统)

通过配置FastJsonConfig,配置类如下:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

  @Override
  public void configureMessageConverters(List> converters) {
    super.configureMessageConverters(converters);
    //1.定义一个convert转换消息对象
    FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
    //2.添加fastjson的配置信息,比如:是否要格式化返回json数据
    FastJsonConfig fastJsonConfig = new FastJsonConfig();
    fastJsonConfig.setSerializerFeatures(
        SerializerFeature.PrettyFormat,
        SerializerFeature.WriteNullStringAsEmpty,
        SerializerFeature.DisableCircularReferenceDetect,
        SerializerFeature.WriteNullListAsEmpty
    );
    PropertyFilter propertyFilter = new PropertyFilter() {
      @Override
      public boolean apply(Object object, String name, Object value) {
        if (object instanceof MessageFor841 && value == null) {
          return false;
        }
        return true;
      }
    };
    fastJsonConfig.setSerializeFilters(propertyFilter);
    fastConverter.setFastJsonConfig(fastJsonConfig);
    converters.add(fastConverter);
  }
}

这里解释一下PropertyFilter类中的apply方法,首先3个参数,

object:可以理解成需要转成json的对象

name:字段名(属性名)

value:字段值(属性值)

返回值是一个boolean值,为true时,则对应转成成jsonstring,为false时,则过滤掉。
这里类型为MessageFor841且它的属性字段为null时返回false,表示此字段过滤掉。
其他类型null字段转成""或[]

你可能感兴趣的:(springboot返回值转成JSONString的处理)