使用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ì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09SpringMVC 方法四種類型返回值總結(jié)(你用過幾種)
這篇文章主要介紹了SpringMVC 方法四種類型返回值總結(jié)(你用過幾種),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05詳解mybatis中association和collection的column傳入多個(gè)參數(shù)問題
這篇文章主要介紹了詳解mybatis中association和collection的column傳入多個(gè)參數(shù)問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(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à)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12SpringCloud讓微服務(wù)實(shí)現(xiàn)指定程序調(diào)用
這篇文章主要介紹了SpringCloud讓微服務(wù)實(shí)現(xiàn)指定程序調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06