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

Java在Map轉(zhuǎn)Json字符串時出現(xiàn)"\"轉(zhuǎn)義字符的解決辦法

 更新時間:2023年07月21日 15:12:19   作者:一個胖子IT男  
當一個Map被轉(zhuǎn)成Json字符串后,被添加到另一個Map中,會出現(xiàn)被加上“\”轉(zhuǎn)義字符的情況,這個時候該如何解決呢,下面就來和小編一起了解一下

項目中出現(xiàn)了這樣一個問題,當一個Map被轉(zhuǎn)成Json字符串后,由于業(yè)務需求,會將Map轉(zhuǎn)為JsonObject,添加元素后,又轉(zhuǎn)成Json字符串,最后再被包裝到另一個Map里,被轉(zhuǎn)成Json字符串發(fā)送給APP端,這個時候APP端反應結果中帶有“\”轉(zhuǎn)義字符,無法解析。

簡化一下問題

當一個Map被轉(zhuǎn)成Json字符串后,被添加到另一個Map中,如果這個新的Map需要轉(zhuǎn)成Json字符串格式,那么轉(zhuǎn)化后,內(nèi)部的這個Map轉(zhuǎn)成的Json字符串,都會被加上“\”轉(zhuǎn)義字符。

簡單的模擬一下

    public static void main(String[] args) {
        HashMap<String, Object> param = new HashMap<>();
        param.put("userId", 66666);
        param.put("username", "XXXX");
        HashMap<String, String> pushMap = new HashMap<>();
        pushMap.put("testKey01", "value01");
        pushMap.put("testKey02", "value02");
        param.put("pushJson", JSON.toJSONString(pushMap));
        String pushJson = JSON.toJSONString(param);
        System.out.println(pushJson);
    }

格式化一下結果:

{
    "pushJson":
        "{\"testKey01\":\"value01\",\"testKey02\":\"value02\"}",
    "userId":66666,
    "username":"XXXX"
}

延伸測試一下,如果用JSONObject轉(zhuǎn)Json字符串會不會有問題:

    public static void main(String[] args) {
        HashMap<String, Object> param = new HashMap<>();
        param.put("userId", 66666);
        param.put("username", "XXXX");
//        HashMap<String, String> pushMap = new HashMap<>();
//        pushMap.put("testKey01", "value01");
//        pushMap.put("testKey02", "value02");
        JSONObject pushObject = new JSONObject();
        pushObject.put("testKey01", "value01");
        pushObject.put("testKey02", "value02");
        param.put("pushJson", pushObject.toJSONString());
        String pushJson = JSON.toJSONString(param);
        System.out.println(pushJson);
    }

格式化一下結果:

{
    "pushJson":
        "{\"testKey01\":\"value01\",\"testKey02\":\"value02\"}",
    "userId":66666,
    "username":"XXXX"
}

用原本的Map和JSONObject:

public static void main(String[] args) {
        HashMap<String, Object> param = new HashMap<>();
        param.put("userId", 66666);
        param.put("username", "XXXX");
        HashMap<String, String> pushMap = new HashMap<>();
        pushMap.put("testKey01", "value01");
        pushMap.put("testKey02", "value02");
        JSONObject pushObject = new JSONObject();
        pushObject.put("testKey01", "value01");
        pushObject.put("testKey02", "value02");
        param.put("pushJson", pushMap);
        String pushJson1 = JSON.toJSONString(param);
        System.out.println(pushJson1);
        param.put("pushJson", pushObject);
        String pushJson2 = JSON.toJSONString(param);
        System.out.println(pushJson2);
    }

結果:

{"pushJson":{"testKey01":"value01","testKey02":"value02"},"userId":66666,"username":"XXXX"}
{"pushJson":{"testKey01":"value01","testKey02":"value02"},"userId":66666,"username":"XXXX"}

這樣就不帶轉(zhuǎn)義字符了

而項目中,我是采用將JSON字符串轉(zhuǎn)回Map,然后添加到新的Map中,再轉(zhuǎn)成JSON字符串的方式解決這個問題的:

    HashMap<String, Object> pushApp = new HashMap<>();
    pushApp.put("userId", userList);
    pushApp.put("pushType", pushType);
    pushApp.put("pushJson", JSON.parseObject(message, HashMap.class));
    String pushJson = JSON.toJSONString(pushApp);

當然上面帶“\”轉(zhuǎn)義字符的結果也是有辦法解析的:

    public static void main(String[] args) {
        HashMap<String, Object> param = new HashMap<>();
        param.put("userId", 66666);
        param.put("username", "XXXX");
        HashMap<String, String> pushMap = new HashMap<>();
        pushMap.put("testKey01", "value01");
        pushMap.put("testKey02", "value02");
        param.put("pushJson", JSON.toJSONString(pushMap));
        String pushJson = JSON.toJSONString(param);
        System.out.println(pushJson);
        JSONObject jsonObject = JSONObject.parseObject(pushJson);
        JSONObject jsonData = jsonObject.getJSONObject("pushJson");
        System.out.println("pushJson: " + jsonData);
        String value1 = jsonData.getString("testKey01");
        System.out.println("key: testKey01 value: " + value1);
    }

結果:

{"pushJson":"{\"testKey01\":\"value01\",\"testKey02\":\"value02\"}","userId":66666,"username":"XXXX"}
pushJson: {"testKey01":"value01","testKey02":"value02"}
key: testKey01 value: value01

2019-09-12

        HashMap jsonMap = JSON.parseObject(pushJson,HashMap.class);
        String resultJson = String.valueOf(jsonMap.get("pushJson"));
        System.out.println(resultJson);

反解析的時候,還是可以正常解析出來,不需要轉(zhuǎn)成jsonObject也可以

{"pushJson":"{\"testKey01\":\"value01\",\"testKey02\":\"value02\"}","userId":66666,"username":"XXXX"}
{"testKey01":"value01","testKey02":"value02"}

到此這篇關于Java在Map轉(zhuǎn)Json字符串時出現(xiàn)"\"轉(zhuǎn)義字符的解決辦法的文章就介紹到這了,更多相關Java Map轉(zhuǎn)Json內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java中實體類和JSON對象之間相互轉(zhuǎn)化

    java中實體類和JSON對象之間相互轉(zhuǎn)化

    Java中關于Json格式轉(zhuǎn)化Object,Map,Collection類型和String類型之間的轉(zhuǎn)化在我們實際項目中應用的很是普遍和廣泛。最近工作的過程中也是經(jīng)常有,因此,自己封裝了一個類分享給大家。
    2015-05-05
  • 解決IDEA中同項目引用報紅問題

    解決IDEA中同項目引用報紅問題

    在IDEA中,如果項目引用報紅,可能是因為IDEA的引用緩存問題,可以通過File->Invalidate Caches/Restart清空緩存并重建索引來解決,這個方法可以幫助解決同項目中引用找不到的問題,恢復正常的項目引用,消除報紅
    2024-09-09
  • Java判斷數(shù)字位數(shù)的方法總結

    Java判斷數(shù)字位數(shù)的方法總結

    本文給大家整理了Java判斷數(shù)字位數(shù)的兩種常用方法,對此有興趣的可以跟著小編一起學習下。
    2018-02-02
  • Java字符串拼接詳解

    Java字符串拼接詳解

    大家好,本篇文章主要講的是Java字符串拼接詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Java微信公眾平臺之素材管理

    Java微信公眾平臺之素材管理

    這篇文章主要為大家詳細介紹了Java微信公眾平臺之素材管理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 基于spring?@Cacheable?注解的spel表達式解析執(zhí)行邏輯

    基于spring?@Cacheable?注解的spel表達式解析執(zhí)行邏輯

    這篇文章主要介紹了spring?@Cacheable?注解的spel表達式解析執(zhí)行邏輯,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java設計模式中的策略(Strategy)模式解讀

    Java設計模式中的策略(Strategy)模式解讀

    這篇文章主要介紹了Java設計模式中的策略(Strategy)模式解讀,對象的某個行為,在不同場景有不同實現(xiàn)方式,可以將這些行為的具體實現(xiàn)定義為一組策略,每個實現(xiàn)類實現(xiàn)一種策略,在不同場景使用不同的實現(xiàn),并且可以自由切換策略,需要的朋友可以參考下
    2023-10-10
  • 加速spring/springboot應用啟動速度詳解

    加速spring/springboot應用啟動速度詳解

    這篇文章主要介紹了加速spring/springboot應用啟動速度詳解,本文通過實例代碼給大家介紹的非常詳細對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Java三種IO模型原理實例詳解

    Java三種IO模型原理實例詳解

    這篇文章主要介紹了Java三種IO模型原理實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Elasticsearch中FST與前綴搜索應用實戰(zhàn)解析

    Elasticsearch中FST與前綴搜索應用實戰(zhàn)解析

    這篇文章主要為大家介紹了Elasticsearch中FST與前綴搜索應用實戰(zhàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論