springboot返回值轉(zhuǎn)成JSONString的處理方式
返回值轉(zhuǎn)成JSONString的處理
主要需求描述
有些返回值中的null需要轉(zhuǎn)換成“”或[],另外有些返回值需要把null給屏蔽掉。
解決方法
一(很lowb)
所有的返回值均采用string,在返回值之前,自己特殊處理成JSONString,然后返回給前端即可。
二(比較正統(tǒng))
通過配置FastJsonConfig,配置類如下:
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
//1.定義一個(gè)convert轉(zhuǎn)換消息對象
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2.添加fastjson的配置信息,比如:是否要格式化返回json數(shù)據(jù)
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個(gè)參數(shù):
object:可以理解成需要轉(zhuǎn)成json的對象name:字段名(屬性名)value:字段值(屬性值)
返回值是一個(gè)boolean值,為true時(shí),則對應(yīng)轉(zhuǎn)成成jsonstring,為false時(shí),則過濾掉。
這里類型為MessageFor841且它的屬性字段為null時(shí)返回false,表示此字段過濾掉。
其他類型null字段轉(zhuǎn)成""或[]
JSON.toJSONString
后端想將HashMap類型數(shù)據(jù)返回成json字符串
即導(dǎo)入并使用JSON.toJSONString
使用前提
pom.xml
? ? ? ? <dependency> ? ? ? ? ? ? <groupId>com.alibaba</groupId> ? ? ? ? ? ? <artifactId>fastjson</artifactId> ? ? ? ? ? ? <version>1.2.28</version> ? ? ? ? </dependency>
使用頁需自己寫入下列語句,否則無法自行導(dǎo)入
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;以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中Map和Set練習(xí)項(xiàng)目實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于Java中Map和Set練習(xí)項(xiàng)目的相關(guān)資料,首先介紹了如何使用map來統(tǒng)計(jì)字符串?dāng)?shù)組中每個(gè)字符串的出現(xiàn)次數(shù),然后討論了如何使用set來找出只出現(xiàn)一次的數(shù)字,最后提出了一個(gè)解決壞鍵盤打字問題的思路,需要的朋友可以參考下2024-11-11
Java中List轉(zhuǎn)Map的幾種具體實(shí)現(xiàn)方式和特點(diǎn)
這篇文章主要介紹了幾種常用的List轉(zhuǎn)Map的方式,包括使用for循環(huán)遍歷、Java8StreamAPI、ApacheCommonsCollections和GoogleGuava,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-01-01
SpringBoot項(xiàng)目啟動(dòng)錯(cuò)誤:找不到或無法加載主類的三種解決方法
在開發(fā)SpringBoot應(yīng)用時(shí),經(jīng)??赡軙?huì)遇到一個(gè)啟動(dòng)錯(cuò)誤:“錯(cuò)誤:找不到或無法加載主類 com.example.controller.demo.DemoApplication”,本文將介紹三種解決這一問題的方法,需要的朋友可以參考下2024-10-10
idea 實(shí)現(xiàn)git rebase操作應(yīng)用場景
本文結(jié)合idea工具進(jìn)行rebase的各種場景的操作,借助工具更能直觀地觀察到分支之間地操作差異,方便我們理解rebase的各種操作以及場景的使用,對idea git rebase操作知識(shí)感興趣的朋友一起看看吧2024-01-01
java數(shù)據(jù)庫開發(fā)之JDBC基礎(chǔ)使用方法及實(shí)例詳解
這篇文章主要介紹了java數(shù)據(jù)庫開發(fā)之JDBC基礎(chǔ)知識(shí)詳解,需要的朋友可以參考下2020-02-02
java去除中文括號小括號,或者英文括號的實(shí)例代碼
這篇文章主要介紹了java去除中文括號小括號,或者英文括號的實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

