SpringBoot-扩展FastJsonHttpMessageConverter对返回的json对象进行扩展

时间:2024-05-19 09:17:29

      对于springBoot中Controller的request请求访问,在restful api中,我们一般均使用jsonMessageCoverter对返回的bean对象进行json格式化,那么由于不同的方法,要能返回不同的bean对象,如果需要统一判断返回的内容是成功,还是失败,我们该如何进行扩展呢?下面是利用继承FastJsonHttpMessageConverter,然后对writeInterval方法进行改写后,实现的增加一个returnCode进行统一参数判断的示例。controller类内容如下所示:

SpringBoot-扩展FastJsonHttpMessageConverter对返回的json对象进行扩展

正常情况上,我们访问上面的http://localhost:8000/,在配置了messageConverter后(如下图所示),返回内容类似于如下内容:

   {"createDate":"2018-05-15 14:09:05","loginName":"","operType":"add","userId":101,"userName":"hello devtools.这是一个springBoot的用户认证中心.","userPwd":""}

SpringBoot-扩展FastJsonHttpMessageConverter对返回的json对象进行扩展

如果我们想实现,无论Controller层的方法返回什么样的bean,均增加一段统一的返回值该如何实现呢?这里我们使用扩展FastJsonHttpMessageConverter的方式,增加一个类ResponseConverter,该类继承FastJsonHttpMessageConverter,内容如下:
SpringBoot-扩展FastJsonHttpMessageConverter对返回的json对象进行扩展

修改appConfig.java的内容如下:

     SpringBoot-扩展FastJsonHttpMessageConverter对返回的json对象进行扩展

这样,所有正常的request请求的返回内容中,均会增加一个retCode和retMsg的json属性,返回内容如下所示:

{"retBean":{"createDate":"2018-05-15 14:18:39","loginName":"","operType":"add","userId":101,"userName":"hello devtools.这是一个springBoot的用户认证中心.","userPwd":""},"retCode":"1","retMsg":""}
对应的ReturnBean类所下所示:
   SpringBoot-扩展FastJsonHttpMessageConverter对返回的json对象进行扩展