springboot返回值转成JSONString的处理

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

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

二(比较正统)

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

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

  @Override
  public void configureMessageConverters(List<HttpMessageConverter<?>> 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字段转成""或[]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot的控制器方法可以使用不同的返回值类型。以下是一些常见的返回值类型: 1. 字符串:可以直接返回一个字符串,它将作为响应的主体内容返回给客户端。 ```java @GetMapping("/hello") public String hello() { return "Hello, World!"; } ``` 2. 对象:可以返回一个Java对象,Spring Boot将自动将其转换为JSON格式返回给客户端。 ```java @GetMapping("/user/{id}") public User getUser(@PathVariable Long id) { User user = userService.getUserById(id); return user; } ``` 3. ResponseEntity:可以使用ResponseEntity类来自定义响应的状态码、头部信息和主体内容。 ```java @GetMapping("/user/{id}") public ResponseEntity<User> getUser(@PathVariable Long id) { User user = userService.getUserById(id); if (user != null) { return ResponseEntity.ok(user); } else { return ResponseEntity.notFound().build(); } } ``` 4. ModelAndView:可以返回一个ModelAndView对象,用于控制视图的渲染和模型数据的传递。 ```java @GetMapping("/home") public ModelAndView home() { ModelAndView modelAndView = new ModelAndView("home"); modelAndView.addObject("message", "Welcome to my website!"); return modelAndView; } ``` 5. 其他类型:还可以返回其他类型,如InputStream、File等,用于直接返回文件或流给客户端。 ```java @GetMapping("/file") public ResponseEntity<Resource> getFile() throws IOException { Resource file = fileService.getFile(); return ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getFilename() + "\"") .body(file); } ``` 这只是一些常见的返回值类型,实际上还有很多其他的返回值类型可以使用。根据实际需求选择合适的返回值类型即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值