Java使用JSON傳遞字符串注意事項(xiàng)解析
一、問題由來
項(xiàng)目開發(fā)中,由于實(shí)際需要將某一個(gè)功能模塊抽取成了一個(gè)單獨(dú)的服務(wù),其他地方需要調(diào)用的時(shí)候,通過Spring提供的RestTemplate類發(fā)送請(qǐng)求進(jìn)行調(diào)用。
經(jīng)過測(cè)試這種方法完全可行,我和同事都能夠正常使用,可是有一次調(diào)用一個(gè)方法時(shí)始終出現(xiàn)問題。調(diào)用方的參數(shù)可以正常傳遞,可是被調(diào)用方卻使用匹
配不上,尋找了很久都沒找到原因。
二、問題分析
問題主要在傳遞的invoType參數(shù)上,在被調(diào)用方一直匹配不上,兩邊都是使用switch語(yǔ)句進(jìn)行匹配,數(shù)據(jù)類型為String類型,調(diào)用方的switch語(yǔ)
句可以正常匹配,可是在被調(diào)用卻始終匹配不上,于是就執(zhí)行了默認(rèn)的default語(yǔ)句。并且被調(diào)用方也正常的接收到了invoType的值;
調(diào)用方傳參:

被調(diào)用方獲取參數(shù);

正常來說不應(yīng)該出現(xiàn)這樣的問題,既然被調(diào)用方能獲取到數(shù)據(jù),那就說明數(shù)據(jù)傳輸沒有問題,那到底是哪里出問題了呢?
經(jīng)過反復(fù)排查,打印最終找到問題的原因,打印輸出的結(jié)果如下:

輸出的結(jié)果中,傳遞的字符串兩邊多了兩個(gè)雙引號(hào)因此導(dǎo)致出現(xiàn)問題,不能正確匹配。由于輸出的字符串,最開始看到的時(shí)候也沒在意,忽略了一點(diǎn)
直接輸出字符串時(shí),變量的值兩邊是沒有雙引號(hào)的。

那我這個(gè)調(diào)用方法中,雙引號(hào)的字符串是哪來的呢?是我在傳遞字符串的數(shù)據(jù)時(shí)使用JSON處理過。方法中調(diào)用的fastJson中的toJSONString()方法,
這樣在處理字符串的時(shí)候,就多了一對(duì)雙引號(hào),最終導(dǎo)致后去到的參數(shù)不正確不能正常調(diào)用。

三、解決方案
找到真正的問題后,解決辦法就非常好辦,對(duì)于單個(gè)字符串參數(shù),直接傳遞就行不需要將其轉(zhuǎn)換為JSON數(shù)據(jù)進(jìn)行傳遞。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java 實(shí)現(xiàn)常見的非對(duì)稱加密算法
這篇文章主要介紹了Java 實(shí)現(xiàn)常見的非對(duì)稱加密算法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-11-11
Reactor3 Map與FlatMap的區(qū)別示例詳解
這篇文章主要為大家介紹了Reactor3 Map與FlatMap的區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
java將html轉(zhuǎn)成圖片代碼實(shí)例(html2image)
這篇文章主要介紹了java將html轉(zhuǎn)成圖片的相關(guān)資料,在Java開發(fā)中,將HTML轉(zhuǎn)換為圖片可以使用html2image庫(kù),文中通過代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09
Spring Boot自定義配置實(shí)現(xiàn)IDE自動(dòng)提示功能
這篇文章主要介紹了Spring Boot自定義配置實(shí)現(xiàn)IDE自動(dòng)提示功能,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
Mybatis增強(qiáng)版MyBatis-Flex的具體使用
Mybatis-Flex一個(gè)用于增強(qiáng)MyBatis的框架,本文主要介紹了Mybatis增強(qiáng)版MyBatis-Flex的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06

