亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中JSON格式反序列化為Map且保證存取順序一致的問題

 更新時(shí)間:2025年06月06日 15:26:41   作者:紫冰芊  
這篇文章主要介紹了Java中JSON格式反序列化為Map且保證存取順序一致的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

背景

做項(xiàng)目涉及兩個(gè)微服務(wù)之間傳數(shù)據(jù)時(shí),需要提供方將Map類型的數(shù)據(jù)序列化為com.alibaba.fastjson.JSONObject,再轉(zhuǎn)化為JSONString,傳給接收方,接收方將String轉(zhuǎn)換為com.alibaba.fastjson.JSONObject,再反序列化為Map,且接收方需要保持存取順序一致。

問題

  • 不能將String轉(zhuǎn)為JSONObject,再強(qiáng)轉(zhuǎn)為LinkedMap,這樣編譯會(huì)報(bào)錯(cuò);
  • 也不能將String轉(zhuǎn)為JSONArray,再一個(gè)一個(gè)賦值,組建成LinkedHashMap,還是無序的;
  • 也不能在發(fā)送方發(fā)送對(duì)象的toString格式,在接收方將其轉(zhuǎn)換為LinkedHashMap。

解決方法

(1)對(duì)于僅有一層對(duì)象數(shù)據(jù)內(nèi)部沒有其他對(duì)象或內(nèi)部有其他對(duì)象但不需要保證內(nèi)部其他對(duì)象的存取順序一致。

//發(fā)送方這樣存數(shù)據(jù)
JSONObject map=new JSONObject(true);//關(guān)鍵所在,要設(shè)置為true,否則會(huì)亂序
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");

//發(fā)送方將map.toString()傳給接收方

//接收方將從發(fā)送方獲取的String轉(zhuǎn)化為有序的LinkedHashMap
LinkedHashMap<String, String> root=JSON.parseObject(map.toString(), new TypeReference<LinkedHashMap<String, String>>(){});//關(guān)鍵所在,轉(zhuǎn)化為有序的

(2)對(duì)于有多層對(duì)象數(shù)據(jù),且需要保證內(nèi)部其他對(duì)象的存取順序一致。

//發(fā)送方定義多個(gè)JSONObject
JSONObject mapOut = new JSONObject(true);
for () {
    JSONObject mapIn= new JSONObject(true);
    mapIn.put("key1", "value1");
    mapIn.put("key2", "value2");
    mapOut.put("key3", mapIn);
}

//發(fā)送方將mapOut.toString()發(fā)送給接收方

//接收方將String轉(zhuǎn)化為有序的LinkedHashMap且內(nèi)部結(jié)構(gòu)也有序
LinkedHashMap<String, Map<String, Object>> map = JSON.parseObject(mapOut.toString(), new TypeReference<LinkedHashMap<String, Map<String, Object>>>(){}, Feature.OrderedField);

總結(jié)

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

相關(guān)文章

  • Java將文件夾保留目錄打包為 ZIP 壓縮包并下載的教程詳解

    Java將文件夾保留目錄打包為 ZIP 壓縮包并下載的教程詳解

    這篇文章主要介紹了Java將文件夾保留目錄打包為 ZIP 壓縮包并下載的教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • IDEA SSM整合Redis項(xiàng)目實(shí)例 附源碼

    IDEA SSM整合Redis項(xiàng)目實(shí)例 附源碼

    今天給大家普及IDEA SSM整合Redis項(xiàng)目實(shí)例,包括pom.xml 配置和spring-redis.xml 配置代碼,代碼也很簡單,通過項(xiàng)目實(shí)際案例能更好的幫助大家理解,需要的朋友可以參考下
    2021-06-06
  • spring cloud gateway集成hystrix實(shí)戰(zhàn)篇

    spring cloud gateway集成hystrix實(shí)戰(zhàn)篇

    這篇文章主要介紹了spring cloud gateway集成hystrix實(shí)戰(zhàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • spring-cloud入門之eureka-server(服務(wù)發(fā)現(xiàn))

    spring-cloud入門之eureka-server(服務(wù)發(fā)現(xiàn))

    本篇文章主要介紹了spring-cloud入門之eureka-server(服務(wù)發(fā)現(xiàn)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • 一文搞懂Java中的反射機(jī)制

    一文搞懂Java中的反射機(jī)制

    這篇文章主要介紹了Java中反射機(jī)制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • 使用Netty解決TCP粘包和拆包問題過程詳解

    使用Netty解決TCP粘包和拆包問題過程詳解

    這篇文章主要介紹了使用Netty解決TCP粘包和拆包問題過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Java并發(fā)編程之重入鎖與讀寫鎖

    Java并發(fā)編程之重入鎖與讀寫鎖

    這篇文章主要介紹了Java并發(fā)編程之重入鎖與讀寫鎖,文中相關(guān)實(shí)例代碼詳細(xì),測試可用,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-09-09
  • MacOS如何安裝配置多個(gè)JDK并切換使用詳解

    MacOS如何安裝配置多個(gè)JDK并切換使用詳解

    這篇文章主要介紹了如何在MacOS上安裝和配置多個(gè)JDK版本,通過配置環(huán)境變量來實(shí)現(xiàn),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • Hibernate實(shí)現(xiàn)悲觀鎖和樂觀鎖代碼介紹

    Hibernate實(shí)現(xiàn)悲觀鎖和樂觀鎖代碼介紹

    這篇文章主要介紹了Hibernate實(shí)現(xiàn)悲觀鎖和樂觀鎖的有關(guān)內(nèi)容,涉及hibernate的隔離機(jī)制,以及實(shí)現(xiàn)悲觀鎖和樂觀鎖的代碼實(shí)現(xiàn),需要的朋友可以了解下。
    2017-09-09
  • SpringBoot整合MyBatis-Plus的示例代碼

    SpringBoot整合MyBatis-Plus的示例代碼

    這篇文章主要介紹了SpringBoot整合MyBatis-Plus的示例代碼,使用?MyBatis-Plus 可以減少大量的開發(fā)時(shí)間,單表的增刪改查可以不用寫 sql 語句,本文主要介紹整合需要主要事項(xiàng),需要的朋友可以參考下
    2022-03-03

最新評(píng)論