解決String字符串轉(zhuǎn)JSONObject順序不對(duì)的問(wèn)題
String字符串轉(zhuǎn)JSONObject順序不對(duì)
String goodsSpec={"21445":"套裝德絨紫","21447":"S"}
普通模式
JSONObject jsonObject = JSONObject.parseObject(json);或JSONObject goodsSpecs = jsonObject.getJSONObject(goodsSpec);
轉(zhuǎn)換返回
{"21447":"S","21445":"套裝德絨紫"}
原因
JsonObject內(nèi)部是用Hashmap來(lái)存儲(chǔ)的,所以輸出是按key的排序來(lái)的,如果要讓JsonObject按固定順序(put的順序)排列,可以修改JsonObject的定義HashMap改為L(zhǎng)inkedHashMap
json解析的時(shí)候,通常順序會(huì)發(fā)生改變,如果我們有保持原有順序的需求的話可以通過(guò)如下方式
1、使用fastJson的Feature.OrderedField
JSONObject respJson = JSONObject.parseObject(jsonStr, Feature.OrderedField);
2、初始化JSONObject的時(shí)候
JSONObject(boolean ordered);
3、可以使用Google的Gson,使用gson解析的話是怎么傳就是什么順序
JsonObject jsonObject = new JsonParser().parse(jsonStr).getAsJsonObject();
LinkedHashMap<String, Object> jsonMap = JSON.parseObject(goodsSpec,LinkedHashMap.class, Feature.OrderedField); JSONObject goodsSpecs = new JSONObject(true); goodsSpecs.putAll(jsonMap);
最終結(jié)果
{"21445":"套裝德絨紫","21447":"S"}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- String轉(zhuǎn)JSONObject的兩種方式
- Java中如何將String轉(zhuǎn)JSONObject
- 關(guān)于JSONObject.toJSONString出現(xiàn)地址引用問(wèn)題
- 利用JSONObject.toJSONString()包含或排除指定的屬性
- 使用JSONObject.toJSONString 過(guò)濾掉值為空的key
- JSONObject?toJSONString錯(cuò)誤的解決
- 解決JSONObject.toJSONString()輸出null的問(wèn)題
- Java使用fastjson對(duì)String、JSONObject、JSONArray相互轉(zhuǎn)換
- 詳解Java中String JSONObject JSONArray List<實(shí)體類>轉(zhuǎn)換
相關(guān)文章
Java中JFinal框架動(dòng)態(tài)切換數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了Java中JFinal框架動(dòng)態(tài)切換數(shù)據(jù)庫(kù)的方法,本文通過(guò)兩種方法結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03mybatis 返回Map類型key改為小寫(xiě)的操作
這篇文章主要介紹了mybatis 返回Map類型key改為小寫(xiě)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12字節(jié)二面SpringBoot可以同時(shí)處理多少請(qǐng)求
這篇文章主要為大家介紹了字節(jié)二面之SpringBoot可以同時(shí)處理多少請(qǐng)求面試分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07spring boot加載freemarker模板路徑的方法
這篇文章主要介紹了spring boot加載freemarker模板路徑的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11Java調(diào)用打印機(jī)的2種方式舉例(無(wú)驅(qū)/有驅(qū))
我們平時(shí)使用某些軟件或者在超市購(gòu)物的時(shí)候都會(huì)發(fā)現(xiàn)可以使用打印機(jī)進(jìn)行打印,這篇文章主要給大家介紹了關(guān)于Java調(diào)用打印機(jī)的2種方式,分別是無(wú)驅(qū)/有驅(qū)的相關(guān)資料,需要的朋友可以參考下2023-11-11SpringBoot接口路徑重復(fù),啟動(dòng)服務(wù)器失敗的解決
這篇文章主要介紹了SpringBoot接口路徑重復(fù),啟動(dòng)服務(wù)器失敗的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11springboot+vue實(shí)現(xiàn)Token自動(dòng)續(xù)期(雙Token方案)
雙Token方案通過(guò)訪問(wèn)令牌和刷新令牌提高用戶登錄安全性和體驗(yàn),訪問(wèn)令牌有效期短,包含用戶信息,用于請(qǐng)求校驗(yàn),本文就來(lái)介紹一下springboot+vue實(shí)現(xiàn)Token自動(dòng)續(xù)期(雙Token方案),感興趣的可以了解一下2024-10-10Java分布式學(xué)習(xí)之Kafka消息隊(duì)列
Kafka是由Apache軟件基金會(huì)開(kāi)發(fā)的一個(gè)開(kāi)源流處理平臺(tái),由Scala和Java編寫(xiě)。Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者在網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)2022-07-07Java 8 開(kāi)發(fā)的 Mybatis 注解代碼生成工具
MybatisAnnotationTools 是基于 Java8 開(kāi)發(fā)的一款可以用于自動(dòng)化生成 MyBatis 注解類的工具,支持配置數(shù)據(jù)源、類路徑,表名去前綴、指定類名前后綴等功能.這篇文章主要介紹了Java 8 開(kāi)發(fā)的 Mybatis 注解代碼生成工具 ,需要的朋友可以參考下2019-07-07