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

JSONObject?toJSONString錯(cuò)誤的解決

 更新時(shí)間:2022年02月07日 10:57:56   作者:陌下微塵  
這篇文章主要介紹了JSONObject?toJSONString錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

JSONObject toJSONString錯(cuò)誤

1.com.alibaba.fastjson.JSONObject 繼承了JSON

可以使用其2個(gè)重要的方法:

Model model = new Model();
String json = JSONObject.toJSONString(model); // serializes model to Json
Model model2 = JSONObject.parseObject(json, Model.class); // deserializes json into model2

即可以將json字符串轉(zhuǎn)為json對象,如果該json對象的內(nèi)容是可預(yù)期的對象類型,那么可以通過Model model2 = JSONObject.parseObject(json, Model.class); 取得預(yù)期的對象;

如果是不可預(yù)期的json字符串時(shí),但有固定的key,則可通過JSONObject jsonObject = JSONObject.parseObject(jsonStr);

然后通過 jsonObject.getString("key");等基本方法獲取key對于的value.

2.在使用時(shí)需要注意的地方

并非所有的對象,都能通過JSONObject.toJSONString(model) 轉(zhuǎn)換成功。

例如:在接入阿里語音驗(yàn)證碼時(shí),對SingleCallByTtsRequest請求對象使用以上方法時(shí),就會(huì)轉(zhuǎn)換報(bào)錯(cuò)。

SingleCallByTtsRequest extends RpcAcsRequest<SingleCallByTtsResponse>?
RpcAcsRequest<T extends AcsResponse> extends AcsRequest<T>?
SingleCallByTtsResponse extends AcsResponse

他們的繼承關(guān)系如上,這里并未對錯(cuò)誤原因進(jìn)行深入分析,猜測是因?yàn)槠渲杏邢嗷ヒ脤?dǎo)致解析轉(zhuǎn)換失敗。

3.默認(rèn)過濾掉值為null的key

public static String toJSONString(Object object)

該方法將實(shí)體對象轉(zhuǎn)換成Json字符串時(shí)默認(rèn)忽略值為null的屬性。

public static String toJSONString(Object object, SerializerFeature… features)

該方法將實(shí)體對象轉(zhuǎn)換成Json字符串時(shí),如果不傳遞參數(shù)SerializerFeature.WriteMapNullValue,則忽略值為null的屬性。

JSONUtils.toJSONString的一個(gè)坑

JSONUtils.toJSONString(null); //返回一個(gè)為"null"的字符串

這樣會(huì)導(dǎo)致一個(gè)結(jié)果就是StringUtils.isBlank判斷后,會(huì)為false

因?yàn)楦叩路祷氐倪@個(gè)數(shù)據(jù)結(jié)構(gòu)是個(gè)key-value結(jié)構(gòu),除了null,就是一個(gè)帶有”{}“的一個(gè)字符串。

不需要判斷使用StringUtils.isBlank進(jìn)行判斷

public class JSONUtils {
? ? public static String toJSONString(Object o) {
? ? ? ? JSONWriter writer = new JSONWriter();
? ? ? ? writer.writeObject(o);
? ? ? ? return writer.toString();
? ? }
? ??
? ? public static Object parse(String text) {
? ? ? ? JSONParser parser = new JSONParser(text);
? ? ? ? return parser.parse();
? ? }
}
? ? public void writeNull() {
? ? ? ? write("null");
? ? }
? ??
? ? @SuppressWarnings({ "unchecked", "rawtypes" })
? ? public void writeObject(Object o) {
? ? ? ? if (o == null) {
? ? ? ? ? ? writeNull();
? ? ? ? ? ? return;
? ? ? ? }

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

相關(guān)文章

  • Java Class 加密工具 ClassFinal詳解

    Java Class 加密工具 ClassFinal詳解

    ClassFinal 是一款 java class 文件安全加密工具,支持直接加密jar包或war包,無需修改任何項(xiàng)目代碼,兼容spring-framework;可避免源碼泄漏或字節(jié)碼被反編譯,這篇文章主要介紹了Java Class 加密工具 ClassFinal,需要的朋友可以參考下
    2023-03-03
  • 一篇文章帶你入門Java變量

    一篇文章帶你入門Java變量

    這篇文章主要介紹了Java變量,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • Java零基礎(chǔ)教程之Windows下安裝、啟動(dòng)Tomcat服務(wù)器方法圖解(免安裝版)

    Java零基礎(chǔ)教程之Windows下安裝、啟動(dòng)Tomcat服務(wù)器方法圖解(免安裝版)

    這篇文章主要介紹了Windows系統(tǒng)下安裝、啟動(dòng)、注冊服務(wù)、停止 Tomcat操作的所有方法,本文通過圖文并茂的方式給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2016-09-09
  • springIOC的使用流程及spring中使用類型轉(zhuǎn)換器的方式

    springIOC的使用流程及spring中使用類型轉(zhuǎn)換器的方式

    Spring IOC是Spring框架的核心原理之一,它是一種軟件設(shè)計(jì)模式,用于管理應(yīng)用程序中的對象依賴關(guān)系,這篇文章主要介紹了springIOC的使用流程以及spring中如何使用類型轉(zhuǎn)換器,需要的朋友可以參考下
    2023-06-06
  • 淺談Java的Synchronized鎖原理和優(yōu)化

    淺談Java的Synchronized鎖原理和優(yōu)化

    這篇文章主要介紹了Java的Synchronized鎖原理和優(yōu)化,synchronized的作用是保證在同一時(shí)刻, 被修飾的代碼塊或方法只會(huì)有一個(gè)線程執(zhí)行,以達(dá)到保證并發(fā)安全的效果,需要的朋友可以參考下
    2023-05-05
  • 如何基于LoadingCache實(shí)現(xiàn)Java本地緩存

    如何基于LoadingCache實(shí)現(xiàn)Java本地緩存

    這篇文章主要介紹了如何基于LoadingCache實(shí)現(xiàn)Java本地緩存,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • springboot部署linux訪問服務(wù)器資源的方法

    springboot部署linux訪問服務(wù)器資源的方法

    這篇文章主要介紹了springboot部署linux訪問服務(wù)器資源,部署springboot項(xiàng)目至服務(wù)器用了幾種不同方法,文中給大家詳細(xì)介紹,需要的朋友可以參考下
    2019-12-12
  • scala 匿名函數(shù)案例詳解

    scala 匿名函數(shù)案例詳解

    Scala支持一級(jí)函數(shù),函數(shù)可以用函數(shù)文字語法表達(dá),即(x:Int)=> x + 1,該函數(shù)可以由一個(gè)叫作函數(shù)值的對象來表示,這篇文章主要介紹了scala 匿名函數(shù)詳解,需要的朋友可以參考下
    2023-03-03
  • Springboot如何實(shí)現(xiàn)對配置文件中的明文密碼加密

    Springboot如何實(shí)現(xiàn)對配置文件中的明文密碼加密

    這篇文章主要介紹了Springboot如何實(shí)現(xiàn)對配置文件中的明文密碼加密問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 基于java語言實(shí)現(xiàn)快遞系統(tǒng)

    基于java語言實(shí)現(xiàn)快遞系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于java語言實(shí)現(xiàn)快遞系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論