最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用JSON.toJSONString()返回{}的原因

 更新時(shí)間:2022年02月07日 11:11:41   作者:飛子  
這篇文章主要介紹了使用JSON.toJSONString()返回{}的原因,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

JSON.toJSONString()返回{}原因

測試代碼

public static void main(String[] args) {undefined
ResultModel resultModel = ResultModel.error(“110”,“error”);
System.out.println(JSON.toJSONString(resultModel));
}

原因

ResultModel 未添加Getter,只需添加Getter即可

JSON.toJSONString的坑有些字段沒有了

1.問題

在使用fastjson中的JSON.toJSONString方法將對象轉(zhuǎn)換成json字符串的時(shí)候,發(fā)現(xiàn)有些字段沒有了。如:

public static void main(String[] args) {
? ? ? ? Map<String,Object>map=new HashMap<>();
? ? ? ? map.put("id","1");
? ? ? ? map.put("name",null);
? ? ? ? System.out.println(JSON.toJSONString(map));
? ? }

輸出結(jié)果: {"id":"1"}

輸出結(jié)果中沒有了 "name"這個(gè)屬性了;

2.解決方式

加SerializerFeature.WriteMapNullValue)

public static void main(String[] args) {
? ? ? ? Map<String,Object>map=new HashMap<>();
? ? ? ? map.put("id","1");
? ? ? ? map.put("name",null);
? ? ? ? System.out.println(JSON.toJSONString(map,SerializerFeature.WriteMapNullValue));
? ? }

輸出結(jié)果: {"name":null,"id":"1"}

3.原因

轉(zhuǎn)json串,默認(rèn)設(shè)置了許多序列化配置:

名稱含義備注
QuoteFieldNames輸出key時(shí)是否使用雙引號,默認(rèn)為true 
UseSingleQuotes使用單引號而不是雙引號,默認(rèn)為false 
WriteMapNullValue是否輸出值為null的字段,默認(rèn)為false 
WriteEnumUsingToStringEnum輸出name()或者original,默認(rèn)為false 
UseISO8601DateFormatDate使用ISO8601格式輸出,默認(rèn)為false 
WriteNullListAsEmptyList字段如果為null,輸出為[],而非null 
WriteNullStringAsEmpty字符類型字段如果為null,輸出為”“,而非null 
WriteNullNumberAsZero數(shù)值字段如果為null,輸出為0,而非null 
WriteNullBooleanAsFalseBoolean字段如果為null,輸出為false,而非null 
SkipTransientField如果是true,類中的Get方法對應(yīng)的Field是transient,序列化時(shí)將會被忽略。默認(rèn)為true 
SortField按字段名稱排序后輸出。默認(rèn)為false 
WriteTabAsSpecial把\t做轉(zhuǎn)義輸出,默認(rèn)為false 
PrettyFormat結(jié)果是否格式化,默認(rèn)為false 
WriteClassName序列化時(shí)寫入類型信息,默認(rèn)為false。反序列化是需用到 
DisableCircularReferenceDetect消除對同一對象循環(huán)引用的問題,默認(rèn)為false 
WriteSlashAsSpecial對斜杠’/’進(jìn)行轉(zhuǎn)義 
BrowserCompatible將中文都會序列化為\uXXXX格式,字節(jié)數(shù)會多一些,但是能兼容IE 6,默認(rèn)為false 
WriteDateUseDateFormat全局修改日期格式,默認(rèn)為false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat); 
DisableCheckSpecialChar一個(gè)對象的字符串屬性中如果有特殊字符如雙引號,將會在轉(zhuǎn)成json時(shí)帶有反斜杠轉(zhuǎn)移符。如果不需要轉(zhuǎn)義,可以使用這個(gè)屬性。默認(rèn)為false 
NotWriteRootClassName  
BeanToArray將對象轉(zhuǎn)為array輸出 
WriteNonStringKeyAsString不是String的字段寫為String 
NotWriteDefaultValue不設(shè)默認(rèn)值 
BrowserSecure  
IgnoreNonFieldGetter忽略沒有g(shù)etter方法的屬性 
WriteEnumUsingName目前版本的fastjson默認(rèn)對enum對象使用WriteEnumUsingName屬性,因此會將enum值序列化為其Name。
使用WriteEnumUsingToString方法可以序列化時(shí)將Enum轉(zhuǎn)換為toString()的返回值;同時(shí)override toString函數(shù)能夠?qū)num值輸出需要的形式。但是這樣做會帶來一個(gè)問題,對應(yīng)的反序列化使用的Enum的靜態(tài)方法valueof可能無法識別自行生成的toString(),導(dǎo)致反序列化出錯(cuò)。
如果將節(jié)省enum序列化后的大小,可以將enum序列化其ordinal值,保存為int類型。fastJson在反序列化時(shí),如果值為int,則能夠使用ordinal值匹配,找到合適的對象。
fastjson要將enum序列化為ordinal只需要禁止WriteEnumUsingName feature。
首先根據(jù)默認(rèn)的features排除WriteEnumUsingName,然后使用新的features序列化即可。
 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java int與integer的對比區(qū)別

    Java int與integer的對比區(qū)別

    這篇文章主要介紹了Java int與integer的對比區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Java 中使用數(shù)組存儲和操作數(shù)據(jù)

    Java 中使用數(shù)組存儲和操作數(shù)據(jù)

    本文將介紹Java中常用的數(shù)組操作方法,通過詳細(xì)的示例和解釋,幫助讀者全面理解和掌握這些方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • SpringBoot工程中Spring Security應(yīng)用實(shí)踐記錄流程分析

    SpringBoot工程中Spring Security應(yīng)用實(shí)踐記錄流程分析

    Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。這篇文章主要介紹了SpringBoot工程中Spring Security應(yīng)用實(shí)踐,需要的朋友可以參考下
    2021-09-09
  • springboot集成KoTime的配置過程

    springboot集成KoTime的配置過程

    koTime是一個(gè)springboot項(xiàng)目性能分析工具,通過追蹤方法調(diào)用鏈路以及對應(yīng)的運(yùn)行時(shí)長快速定位性能瓶頸,這篇文章主要介紹了springboot集成KoTime,需要的朋友可以參考下
    2022-06-06
  • Java獲取HttpServletRequest的三種方法詳解

    Java獲取HttpServletRequest的三種方法詳解

    這篇文章主要介紹了Java獲取HttpServletRequest的三種方法詳解,是一個(gè)接口,全限定名稱為Jakarta.Serclet.http.HttpServletRequest
    HttpServletRequest接口是Servlet規(guī)范的一員,需要的朋友可以參考下
    2023-11-11
  • 關(guān)于mybatis if else if 條件判斷SQL片段表達(dá)式取值和拼接問題

    關(guān)于mybatis if else if 條件判斷SQL片段表達(dá)式取值和拼接問題

    這篇文章主要介紹了mybatis if else if 條件判斷SQL片段表達(dá)式取值和拼接,文章通過自己真實(shí)使用的例子給大家詳細(xì)介紹,需要的朋友可以參考下
    2021-09-09
  • Mybatisplus自動填充實(shí)現(xiàn)方式及代碼示例

    Mybatisplus自動填充實(shí)現(xiàn)方式及代碼示例

    這篇文章主要介紹了Mybatisplus自動填充實(shí)現(xiàn)方式及代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • java基礎(chǔ)--JDK SPI概述

    java基礎(chǔ)--JDK SPI概述

    SPI是一種服務(wù)發(fā)現(xiàn)機(jī)制,本文就SPI做了詳細(xì)概述,具有很好的參考價(jià)值,希望對小伙伴們有所幫助,感興趣的朋友一起來參考參考吧
    2021-08-08
  • Spring?Security配置保姆級教程

    Spring?Security配置保姆級教程

    Spring?Security是一個(gè)功能強(qiáng)大且可高度自定義的身份驗(yàn)證和訪問控制框架。它是保護(hù)基于Spring的應(yīng)用程序的事實(shí)上的標(biāo)準(zhǔn)。Spring?Security是一個(gè)專注于為Java應(yīng)用程序提供身份驗(yàn)證和授權(quán)的框架
    2023-02-02
  • JavaFX Metro UI 和 開發(fā)庫使用簡介

    JavaFX Metro UI 和 開發(fā)庫使用簡介

    這篇文章主要介紹了JavaFX Metro UI 和 開發(fā)庫解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評論

和静县| 衡山县| 仪征市| 广宗县| 兴业县| 神木县| 榆社县| 岱山县| 海城市| 台东市| SHOW| 土默特左旗| 沙洋县| 中方县| 清丰县| 灵山县| 古丈县| 彰武县| 营山县| 彰化县| 绥阳县| 安国市| 通州市| 岑溪市| 乌海市| 安丘市| 若羌县| 新绛县| 惠安县| 新宁县| 简阳市| 新民市| 宿松县| 繁昌县| 泸西县| 乌苏市| 莆田市| 沈丘县| 安丘市| 闵行区| 临泉县|