使用JSON.toJSONString格式化成json字符串時(shí)保留null屬性
JSON.toJSONString格式化成json字符串時(shí)保留null屬性
使用阿里的
com.alibaba.fastjson.JSON
格式化時(shí),默認(rèn)null屬性會(huì)被過濾掉,可以設(shè)置不過濾null
public static String parseScriptJsonStringWithNullValue(Object obj) {?
? ?if (obj == null || (obj instanceof Undefined)) {?
? ? ? return null;?
? ?}?
? ?return JSON.toJSONString(obj, new SerializeFilter[]{scriptArrayFilter}, SerializerFeature.WriteMapNullValue);?
}指定這個(gè)參數(shù)即可
SerializerFeature.WriteMapNullValue
屬性說明
QuoteFieldNames———輸出key時(shí)是否使用雙引號(hào),默認(rèn)為true
WriteMapNullValue———是否輸出值為null的字段,默認(rèn)為false
WriteNullNumberAsZero———數(shù)值字段如果為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轉(zhuǎn)成"" ? ? ? ? ? ? ? ? ? ? SerializerFeature.WriteNullStringAsEmpty, ? ? ? ? ? ? ? ? ? ? // 將Number類型的null轉(zhuǎn)成0 ? ? ? ? ? ? ? ? ? ? SerializerFeature.WriteNullNumberAsZero, ? ? ? ? ? ? ? ? ? ? // 將List類型的null轉(zhuǎn)成[] ? ? ? ? ? ? ? ? ? ? SerializerFeature.WriteNullListAsEmpty, ? ? ? ? ? ? ? ? ? ? // 將Boolean類型的null轉(zhuǎn)成false ? ? ? ? ? ? ? ? ? ? SerializerFeature.WriteNullBooleanAsFalse, ? ? ? ? ? ? ? ? ? ? // 避免循環(huán)引用 ? ? ? ? ? ? ? ? ? ? SerializerFeature.DisableCircularReferenceDetect ? ? ? ? ? ? ? ? );
處理返回結(jié)果中字段為空或?yàn)閚ull,不展示字段的問題(字段展示不全)
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處理返回的參數(shù)為null、或者不返回
?* date: 2019/11/22 15:03
?* author: hantao
?* version: 1.0
?* springboot 處理返回結(jié)果中字段為空或?yàn)閚ull,不展示字段的問題(字段展示不全)
?*/
@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轉(zhuǎn)成""
? ? ? ? ? ? ? ? SerializerFeature.WriteNullStringAsEmpty,
? ? ? ? ? ? ? ? // 將Number類型的null轉(zhuǎn)成0
? ? ? ? ? ? ? ? SerializerFeature.WriteNullNumberAsZero,
? ? ? ? ? ? ? ? // 將List類型的null轉(zhuǎn)成[]
? ? ? ? ? ? ? ? SerializerFeature.WriteNullListAsEmpty,
? ? ? ? ? ? ? ? // 將Boolean類型的null轉(zhuǎn)成false
? ? ? ? ? ? ? ? SerializerFeature.WriteNullBooleanAsFalse,
? ? ? ? ? ? ? ? // 避免循環(huán)引用
? ? ? ? ? ? ? ? SerializerFeature.DisableCircularReferenceDetect);
?
? ? ? ? converter.setFastJsonConfig(config);
? ? ? ? converter.setDefaultCharset(Charset.forName("UTF-8"));
? ? ? ? List<MediaType> mediaTypeList = new ArrayList<>();
? ? ? ? // 解決中文亂碼問題,相當(dāng)于在Controller上的@RequestMapping中加了個(gè)屬性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/");
? ? }?
}以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
一篇文章帶你理解Java Spring三級(jí)緩存和循環(huán)依賴
這篇文章主要介紹了淺談Spring 解決循環(huán)依賴必須要三級(jí)緩存嗎,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09
SpringMVC 方法四種類型返回值總結(jié)(你用過幾種)
這篇文章主要介紹了SpringMVC 方法四種類型返回值總結(jié)(你用過幾種),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05
詳解mybatis中association和collection的column傳入多個(gè)參數(shù)問題
這篇文章主要介紹了詳解mybatis中association和collection的column傳入多個(gè)參數(shù)問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
使用Log4j2代碼方式配置實(shí)現(xiàn)線程級(jí)動(dòng)態(tài)控制
這篇文章主要介紹了使用Log4j2代碼方式配置實(shí)現(xiàn)線程級(jí)動(dòng)態(tài)控制,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringCloud讓微服務(wù)實(shí)現(xiàn)指定程序調(diào)用
這篇文章主要介紹了SpringCloud讓微服務(wù)實(shí)現(xiàn)指定程序調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

