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


猜你喜欢
- 通常我们遇到的图片缩放需求,都是图片基于屏幕自适应后,进行缩放和移动,且图片最小只能是自适应的大小。最近遇到一个需求,要求图片只能在屏幕内缩
- 本文实例为大家分享了Android Studio实现进度条效果的具体代码,供大家参考,具体内容如下实验作业 要求一个进度条,进度随机效果图x
- Java Lambda 源码分析问题:Lambda 表达式是什么?JVM 内部究竟是如何实现 Lambda 表达式的?为什么要这样实现?一、
- 方法一、利用控件或窗体的Paint事件中的PainEventArgs在窗体或控件的Paint事件中接收对图形对象的引用,作为PaintEve
- 一、基本使用它们是 LockSupport 类中的方法// 暂停当前线程LockSupport.park(); // 恢复某个线程的运行Lo
- 请求进入DispatcherServlet的doDispatch后,获取HandlerMethod。然后根据HandlerMethod来确认
- **写作原因:跨进程通信的实现和理解是Android进阶中重要的一环。下面博主分享IPC一些相关知识、操作及自己在学习IPC过程中的一些理解
- 1、数组的定义先声明后使用数据类型 [] 数组名称 = new 数据类型[长度];String[] arr3 = new String[5]
- 前言你可能看到Java程序员每周的工作是编码开发一个可伸缩的Web应用程序,或创建一个动态的网站,或者开发高效的电子商务产品页面,也可能是开
- Spring 框架是一个流行的Java应用程序框架,它提供了许多强大的功能,如依赖注入和面向切面编程。然而在使用 Spring 框架时,我们
- 一、ThreadPoolThreadPool是.Net Framework 2.0版本中出现的。ThreadPool出现的背景:Thread
- 直接看代码,注释都写清楚了public class MainActivity extends Activity { private
- 前言Spring 的 JDBC Templet 是 Spring 对 JDBC 使用的一个基本的封装。他主要是帮助程序员实现了数据库连接的管
- 上一篇介绍了使用springmvc集成shiro登陆过程,通过FormAuthenticationFilter过滤器获取到用户输入的账号密码
- AttributeUsage预定义特性AttributeUsage描述了如何使用一个自定义特性类。它规定了特性可应用到的项目的类型。规定该特
- 目录特性引入依赖使用特性Kotlin + Flow 实现的 Android 应用初始化任务启动库。支持模块化,按模块加载任务可指定工作进程名
- Unity打开Unity Ctrl+9,打开Unity商店,下载TexturePacker Importer插件这个插件是用来解析图集文件的
- 前言apollo配置经常使用的方式是@value,比较便捷,如果只出现在一个类中还行,但是如果多个类中并不是很方便,特别是如果出现配置值变化
- 静态成员变量与非静态成员变量的区别以下面的例子为例说明package cn.galc.test;public class Cat {/**
- 本文实例为大家分享了java简单实现斗地主发牌的具体代码,供大家参考,具体内容如下问题:参考斗地主的游戏规则,完成一个发牌的功能(54张牌,