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

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

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

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

簡化一下問題

當一個Map被轉成Json字符串后,被添加到另一個Map中,如果這個新的Map需要轉成Json字符串格式,那么轉化后,內部的這個Map轉成的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");
        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轉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"}

這樣就不帶轉義字符了

而項目中,我是采用將JSON字符串轉回Map,然后添加到新的Map中,再轉成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);

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

    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);

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

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

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

相關文章

  • 深入淺析springboot中static和templates區(qū)別

    深入淺析springboot中static和templates區(qū)別

    這篇文章主要介紹了springboot中static和templates區(qū)別,本文通過圖文實例代碼相結合給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Java實現(xiàn)整合文件上傳到FastDFS的方法詳細

    Java實現(xiàn)整合文件上傳到FastDFS的方法詳細

    FastDFS是一個開源的輕量級分布式文件系統(tǒng),對文件進行管理,功能包括:文件存儲、文件同步、文件上傳、文件下載等,解決了大容量存儲和負載均衡的問題。本文將提供Java將文件上傳至FastDFS的示例代碼,需要的參考一下
    2022-02-02
  • mybatis-plus集成springboot實現(xiàn)XML映射器方式

    mybatis-plus集成springboot實現(xiàn)XML映射器方式

    本文詳細介紹了MyBatis-Plus中SQL映射配置的使用方法,包括動態(tài)SQL的支持和常見SQL操作的實現(xiàn),通過XML映射器,可以靈活地定義復雜的查詢語句,并處理動態(tài)條件和批量操作,文中還提供了具體的配置步驟和示例代碼,幫助開發(fā)者更好地理解和應用這些功能
    2026-03-03
  • java 可重啟線程及線程池類的設計(詳解)

    java 可重啟線程及線程池類的設計(詳解)

    下面小編就為大家?guī)硪黄猨ava 可重啟線程及線程池類的設計(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Spring Cloud Gateway重試機制原理解析

    Spring Cloud Gateway重試機制原理解析

    這篇文章主要介紹了Spring Cloud Gateway重試機制原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Java調用打印機的2種方式舉例(無驅/有驅)

    Java調用打印機的2種方式舉例(無驅/有驅)

    我們平時使用某些軟件或者在超市購物的時候都會發(fā)現(xiàn)可以使用打印機進行打印,這篇文章主要給大家介紹了關于Java調用打印機的2種方式,分別是無驅/有驅的相關資料,需要的朋友可以參考下
    2023-11-11
  • Java如何實現(xiàn)通過證書訪問Https請求

    Java如何實現(xiàn)通過證書訪問Https請求

    這篇文章主要介紹了Java如何實現(xiàn)通過證書訪問Https請求,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java實現(xiàn)圖像轉碼為字符畫的方法

    java實現(xiàn)圖像轉碼為字符畫的方法

    這篇文章主要為大家詳細介紹了java實現(xiàn)圖像轉碼為字符畫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java語言實現(xiàn)數(shù)據(jù)結構棧代碼詳解

    Java語言實現(xiàn)數(shù)據(jù)結構棧代碼詳解

    這篇文章主要介紹了Java語言實現(xiàn)數(shù)據(jù)結構棧代碼詳解,簡單介紹了棧的概念,然后分享了線性棧和鏈式棧的Java代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot整合Spring Security實現(xiàn)基礎認證與授權

    SpringBoot整合Spring Security實現(xiàn)基礎認證與授權

    在后端開發(fā)領域,認證(Authentication)?和授權(Authorization)?是系統(tǒng)安全的核心基石,Spring Security 作為 Spring 生態(tài)官方推薦的安全框架,是Java 后端安全開發(fā)的首選方案,本文給大家介紹了SpringBoot整合Spring Security實現(xiàn)基礎認證與授權
    2026-04-04

最新評論

长治县| 马尔康县| 且末县| 夏津县| 金寨县| 中超| 刚察县| 富阳市| 大姚县| 厦门市| 和田县| 白山市| 岳池县| 扶余县| 介休市| 东乌珠穆沁旗| 钦州市| 三都| 梅河口市| 陈巴尔虎旗| 旬邑县| 高安市| 亚东县| 石泉县| 信宜市| 桃江县| 龙山县| 禹城市| 永新县| 南召县| 百色市| 井冈山市| 井陉县| 本溪市| 手游| 江达县| 桑日县| 涞源县| 元谋县| 永泰县| 屯昌县|