欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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字符串的時候,發(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"這個屬性了;

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串,默認設(shè)置了許多序列化配置:

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

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

相關(guān)文章

  • 只用400行Java代碼就能實現(xiàn)的飛翔的小鳥游戲

    只用400行Java代碼就能實現(xiàn)的飛翔的小鳥游戲

    今天給大家?guī)淼氖顷P(guān)于Java實戰(zhàn)的相關(guān)知識,文章圍繞著只用400行Java代碼就能實現(xiàn)的飛翔的小鳥游戲展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 使用FeignClient進行微服務交互方式(微服務接口互相調(diào)用)

    使用FeignClient進行微服務交互方式(微服務接口互相調(diào)用)

    這篇文章主要介紹了使用FeignClient進行微服務交互方式(微服務接口互相調(diào)用),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java多線程編程中使用Condition類操作鎖的方法詳解

    Java多線程編程中使用Condition類操作鎖的方法詳解

    Condition是java.util.concurrent.locks包下的類,提供了對線程鎖的更精細的控制方法,下面我們就來看一下Java多線程編程中使用Condition類操作鎖的方法詳解
    2016-07-07
  • java編程下字符串的16位,32位md5加密實現(xiàn)方法

    java編程下字符串的16位,32位md5加密實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava編程下字符串的16位,32位md5加密實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Spring如何動態(tài)自定義logback日志目錄詳解

    Spring如何動態(tài)自定義logback日志目錄詳解

    這篇文章主要給大家介紹了關(guān)于Spring如何動態(tài)自定義logback日志目錄的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-10-10
  • Java中的IO流之字符流Reader和Writer

    Java中的IO流之字符流Reader和Writer

    這篇文章主要介紹了Java中的IO流之字符流Reader和Writer,Reader : 和InputStream的唯一的區(qū)別就在于讀的數(shù)據(jù)單位不同,繼承自Reader的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字符16bit,需要的朋友可以參考下
    2023-10-10
  • java常見的序列化方式

    java常見的序列化方式

    這篇文章主要為大家詳細介紹了java中兩種常見的序列化方式,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 使用@ApiModel遇到的問題及解決

    使用@ApiModel遇到的問題及解決

    這篇文章主要介紹了使用@ApiModel遇到的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • SpringBoot中RestTemplate的使用詳解

    SpringBoot中RestTemplate的使用詳解

    這篇文章主要介紹了SpringBoot中RestTemplate的使用詳解,RestTemplate是由Spring框架提供的一個可用于應用中調(diào)用rest服務的類它簡化了與http服務的通信方式,統(tǒng)一了RESTFul的標準,封裝了http連接,我們只需要傳入url及其返回值類型即可,需要的朋友可以參考下
    2023-10-10
  • Java class文件格式之屬性_動力節(jié)點Java學院整理

    Java class文件格式之屬性_動力節(jié)點Java學院整理

    在本文中, 主要講解了class文件中的一些屬性。 這些屬性可以出現(xiàn)在class文件中的對個地方, 用來描述一些其他信息
    2017-06-06

最新評論