软件编程
位置:首页>> 软件编程>> java编程>> springboot返回值转成JSONString的处理方式

springboot返回值转成JSONString的处理方式

作者:wz_ling1991  发布时间:2022-09-27 12:04:46 

标签:springboot,返回值,JSONString

返回值转成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字段转成""或[] 

JSON.toJSONString

后端想将HashMap类型数据返回成json字符串

即导入并使用JSON.toJSONString

使用前提

pom.xml

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.28</version>
        </dependency>

使用页需自己写入下列语句,否则无法自行导入

import com.alibaba.fastjson.JSON;

使用

HashMap<String, Object> data = new HashMap<>();
List<MainMenu> mainMenus = menuDao.getMainMenus();
data.put("data",mainMenus);
data.put("status",200);
String data_json = JSON.toJSONString(data);
System.out.println("成功访问!!!");
return data_json;

来源:https://blog.csdn.net/wz_ling1991/article/details/84653782

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com