使用JSON.toJSONString格式化成json字符串时保留null属性
作者:qq_34412985 发布时间:2023-05-10 14:56:34
标签:JSON.toJSONString,格式化,json,null
JSON.toJSONString格式化成json字符串时保留null属性
使用阿里的
com.alibaba.fastjson.JSON
格式化时,默认null属性会被过滤掉,可以设置不过滤null
public static String parseScriptJsonStringWithNullValue(Object obj) {
if (obj == null || (obj instanceof Undefined)) {
return null;
}
return JSON.toJSONString(obj, new SerializeFilter[]{scriptArrayFilter}, SerializerFeature.WriteMapNullValue);
}
指定这个参数即可
SerializerFeature.WriteMapNullValue
属性说明
QuoteFieldNames
———输出key时是否使用双引号,默认为true
WriteMapNullValue
———是否输出值为null的字段,默认为false
WriteNullNumberAsZero
———数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty
———List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty
———字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse
———Boolean字段如果为null,输出为false,而非null
例子
String ret = JSON.toJSONStringWithDateFormat(returnValue, "yyyy-MM-dd HH:mm:ss",
SerializerFeature.PrettyFormat,
// 保留map空的字段
SerializerFeature.WriteMapNullValue,
// 将String类型的null转成""
SerializerFeature.WriteNullStringAsEmpty,
// 将Number类型的null转成0
SerializerFeature.WriteNullNumberAsZero,
// 将List类型的null转成[]
SerializerFeature.WriteNullListAsEmpty,
// 将Boolean类型的null转成false
SerializerFeature.WriteNullBooleanAsFalse,
// 避免循环引用
SerializerFeature.DisableCircularReferenceDetect
);
处理返回结果中字段为空或为null,不展示字段的问题(字段展示不全)
package com.aiqin.mgs.market.api.config;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
/**
* description: fastjson处理返回的参数为null、或者不返回
* date: 2019/11/22 15:03
* author: hantao
* version: 1.0
* springboot 处理返回结果中字段为空或为null,不展示字段的问题(字段展示不全)
*/
@Configuration
public class FastJsonConfiguration extends WebMvcConfigurationSupport {
/**
* 使用阿里 fastjson 作为JSON MessageConverter
* @param converters
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
config.setSerializerFeatures(
// 保留map空的字段
SerializerFeature.WriteMapNullValue,
// 将String类型的null转成""
SerializerFeature.WriteNullStringAsEmpty,
// 将Number类型的null转成0
SerializerFeature.WriteNullNumberAsZero,
// 将List类型的null转成[]
SerializerFeature.WriteNullListAsEmpty,
// 将Boolean类型的null转成false
SerializerFeature.WriteNullBooleanAsFalse,
// 避免循环引用
SerializerFeature.DisableCircularReferenceDetect);
converter.setFastJsonConfig(config);
converter.setDefaultCharset(Charset.forName("UTF-8"));
List<MediaType> mediaTypeList = new ArrayList<>();
// 解决中文乱码问题,相当于在Controller上的@RequestMapping中加了个属性produces = "application/json"
mediaTypeList.add(MediaType.APPLICATION_JSON);
converter.setSupportedMediaTypes(mediaTypeList);
converters.add(converter);
}
/**
* 整合了swagger需要配置swagger拦截
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html","index.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/META-INF/resources/static/");
}
}
来源:https://blog.csdn.net/qq_34412985/article/details/81985459


猜你喜欢
- 在gitee上创建springcloud仓库 application.yaml(https方式)server: por
- 创建普通Maven工程导入所需依赖坐标:<dependencies> <!-- https://
- 应用场景有些时候项目中会用到很多路径,并且很可能多个路径在同一个根目录下,那为了方便配置的修改,达到只修改根目录即可达到一改全改的效果,此时
- 本文实例讲述了WinForm实现仿视频播放器左下角滚动新闻效果的方法。分享给大家供大家参考。具体实现方法如下:using System;us
- 准备数据data class ContactEntity( val letter: Char, &n
- JetBrains正在开发一种被称为Qodana的代码质量检测工具。它将JetBrains IDE具有的智能代码检查带入了项目CI/CD管道
- 示例1项目结构代码controller中 UserController.javapackage com.example.demo1110.c
- 本文实例讲述了Android编程设计模式之抽象工厂模式。分享给大家供大家参考,具体如下:一、介绍抽象工厂模式(Abstract Factor
- AOP拦截Controller获取@PathVariable注解传入参数前言:最近项目中需要对controller传入的应用标识(appMa
- 什么是线程池线程池(thread pool)是一种线程使用模式。线程过多或者频繁创建和销毁线程会带来调度开销,进而影响缓存局部性和整体性能。
- 游戏界面程序代码using System;using System.Collections.Generic;using System.Com
- 1.概述项目中经常会遇到一个应用需要访问多个数据源的情况,本文介绍在SpringBoot项目中利用SpringDataJpa技术如何支持多个
- 1:定义一个自己的父级容器,让它继承自一个布局(LinearLayout、RelativeLayout都可以)public class Si
- 本文实例总结了java判断字符串是否为数字的方法。分享给大家供大家参考,具体如下:方法一:用JAVA自带的函数public static b
- 这篇文章主要介绍了Java接口统一样式返回模板简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 本文实例讲述了Android编程之canvas绘制各种图形的方法。分享给大家供大家参考,具体如下:1、首先说一下canvas类:Class
- 本文实例讲述了Android开发中ImageLoder加载网络图片时将图片设置为ImageView背景的方法。分享给大家供大家参考,具体如下
- 前言J.U.C是java包java.util.concurrent的简写,中文简称并发包,是jdk1.5新增用来编写并发相关的基础api。j
- 1、为什么要进行启动优化网上流行一种说法,就是8秒定律,意思是说,如果用户在打开一个页面,在8秒的时间内还没有打开,那么用户大概的会放弃掉,
- 一、简介ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。比如:Task支持线程的