1. 程式人生 > >JSONObject.put 覆蓋原有資料,解決辦法

JSONObject.put 覆蓋原有資料,解決辦法

生產中遇到jsonobject的新增,但是會遇到許多的相同的key值,如果put的話就會覆蓋之前的value。‘
上原網址看有配圖
http://www.jianshu.com/p/924d92cf5eed
在許多的解決方法中大多數人是在for迴圈裡寫了JSONObject newjson = new JSONObject();

這麼一句,但是我要這種形式的怎麼辦? {“王煥”:”經理,執行董事”}是不是不能這麼寫了,如果這樣寫得到的是什麼呢?控制檯輸出如下:

{“王煥”:”經理”} {“王煥”:”執行董事”}

經過三個小時的研究我發現,如果你new一個和之前相同的key的話他會返回之前的value,如果之前沒有的話就會返回空。如下圖:
JSONObject newjson = new JSONObject();
newjson.put(“李白”,”詩人”);
newjson.put(“王維”, “詩人”);
newjson.put(“李白”, “劍客”);
Object xx = newjson.put(“韓愈”, “教育家”);
Object xx1 = newjson.put(“王維”, “山西人”);
System.out.println(xx);
System.out.println(xx1);
——————————————————————————————————
null
詩人

不知道你們看懂沒?王維是之前出現過的key值,再一次put就會返回之前的value值,韓愈之前沒有,所以返回null。這是發現很有幫助,思維如下

借用返回值是否為空做一個判斷,如果返回值為空,那就不管他,新增就好,如果返回值不是空說明這個key之前已經新增過,再次新增則會覆蓋掉返回值,那怎麼辦,不為空put的時候把返回值拼接。這裡我沒有if判斷。如圖:

JSONObject newjson = new JSONObject();
newjson.put(“李白”,”詩人”);
newjson.put(“王維”, “詩人”);
newjson.put(“李白”, “劍客”);
Object xx = newjson.put(“韓愈”, “教育家”);
Object xx1 = newjson.put(“王維”, “山西人”);
newjson.put(“王維”, “山西人”+”,”+xx1);
System.out.println(newjson.toJSONString());
System.out.println(xx);
System.out.println(xx1);
——————————————————————————
{“李白”:”劍客”,”王維”:”山西人,詩人”,”韓愈”:”教育家”}
null
詩人

這樣就達到目的了。生產的原始碼就不粘了,道理是一樣的不過生產中還有其他的業務邏輯。

相關推薦

JSONObject.put 覆蓋原有資料解決辦法

生產中遇到jsonobject的新增,但是會遇到許多的相同的key值,如果put的話就會覆蓋之前的value。‘ 上原網址看有配圖 http://www.jianshu.com/p/924d92cf5eed 在許多的解決方法中大多數人是在for迴圈裡寫了J

vue移動端使用Clipboard複製貼上動態的資料總是報錯解決辦法

點選複製連結按鈕即可複製 實現過程: 下載 npm install clipboard --save 引入到需要的元件中 import Clipboard from "clipboard"; 3.1 實現程式碼:template部分

vue 單文件 樣式寫了scoped 不能覆蓋框架原有樣式的解決辦法

順序 com mage 兩個 scope 不改變 樣式 分享 組件 vue 單文件 樣式寫了scoped 不能覆蓋框架原有樣式的解決辦法 在vue 裏面<style scoped></style> 是為了讓樣式只影響本身自己組件的樣式,不改變全局

根據時間戳增量同步資料解決辦法

由於markdown的樣式太醜了,懶得再調整了,我另外再貼一個github的部落格該文的 github連結 前言 最近在工作中遇到一個比較棘手的問題,客戶端從服務端同步資料的問題。 背景簡介:客戶端有N個,客戶端上的同步時間,各不相同。同步的時候,是一次獲取10條資料,多批次獲取。即分頁獲取。 在程式碼中

【Python3】Python的Scripts資料夾下沒有pip.exe解決辦法

今天給同學安裝32位版的python3.7,裝完竟然在Scripts資料夾下連pip.exe都沒有。 解決辦法: Windows命令列,輸入:python -m ensurepip,即可生成pip3.exe 然後新增Scripts路徑到環境變數path中即可。

vmware tools ,/mnt/hgfs 下沒有共享資料解決辦法

環境為win7+vmware7.1.3+ubuntu11.10 正常安裝vmware tools 設定win下共享資料夾,在ubuntu的mnt/hgfs下看不到設定的共享資料夾 解決辦法: 1.sudo apt-get install intall ope

方法中的函數會掩蓋this解決辦法

say 屬性 ava var hang javascrip func java cti 要知道在javascript中this是種很神奇的東西,但是有時候也很淘氣; 如下: <script> var obj = { name: ‘tqt

ubuntu sogou 輸入法無法輸入文字解決辦法【轉載】

panel div apt-get 方式 workbench install 中文 enc 希望 之前一段時間正常使用的搜狗輸入法突然無法輸出中文(具體現象是,可以呼出搜狗輸入法界面,但是候選詞列表無顯示),解決之後記錄下來,希望能為同樣遇到這個問題的人提供參考。同時附li

由Action傳到頁面的Date類型也是一個Json數組因此沒法正常顯示日期解決辦法如下

pat des pan config sta sdn pac implement pre 原貼請參考: http://blog.csdn.net/btt2013/article/details/50155949 添加一個工具類: JsonDateValueProcess

Ubuntu boot分區滿了解決辦法

解決辦法 ubuntu boot分區滿了 查看當前系統啟動用的內核版本[email protected]:/boot# uname -rm 4.4.0-92-generic x86_64 [email protected]:/boot#列出安裝過的內核版本[email p

xp sp3安裝.Net 4.0提示嚴重錯誤0x80070643解決辦法2017版

完成 防止 結構 key framework regedit str 2014年 關系 客戶電腦上要裝金稅開票軟件,需要.net 4.0.30319.1,電腦環境是xp sp3,已經安裝了.net 2, .net 3.5sp1,安裝.net 4.0的時候提示錯誤0x8007

mac版win10裝eclipse圖標太小了解決辦法(2k顯示屏+win10)

setting 新建 exe sid 並且 目錄 uia xmlns mac 安裝了Eclipse並且打開之後,發現圖標顯示極其細小,肉眼幾乎無法看清了。這是由於Eclipse對高分屏沒有作適配導致的。 Windows 10本身對於高分屏的支持已是相當不錯,蘇菲

stm32不小心把SWD和JTAG都給關了程序下載不進去解決辦法

下載 jws gpo lds clas jks hms led tbb 77源眾稼7n芍乜誥ln姑氛煤http://bjzhbhc.wikidot.com/hf習抗宜1n韻排廝dt倩嵌搪http://gfljv.wikidot.com/s2旨首醒ms俾恿蛋i8酥冒諼http

System center 主機節點具有未處於響應狀態且不可用於放置的代理解決辦法

sytem center表現形式 通過system center創建虛擬機,sytem center 對節點預計使用率獲取不到數據,無法創建虛擬機,如下圖所示解決辦法:1.打開system center 的數據庫服務器,打開VirtualManagerDB數據庫,數據表tbl_ADHC_AgentServer

使用@Slf4j log對象不可用解決辦法

dep log http end 對象 .html art AR enc 方法一 安裝在IDEA下Lombok插件 安裝教程:http://www.cnblogs.com/wangchengb/p/9007627.html 方法二 在pom.xml下引入lombok

yum安裝提示yum鎖定了解決辦法

yum 安裝 鎖定 使用yum安裝,結果提示: yum -y install ansible Another app is currently holding the yum lock; waiting for it to exit...The other application is: Pack

svn更新路徑解決辦法詳細步驟eclipse裏面的更新方法svn廢棄位置Windows環境svn服務器地址換了如何更新本地工作目錄

沒有 eclipse 解決辦法 會有 checkout 工作 log 當前 目錄 svn更新路徑,解決辦法詳細步驟,eclipse裏面的更新方法,svn廢棄位置,Windows環境,svn服務器地址換了,如何更新本地工作目錄 Windows下,svn服務器IP本來是內網一臺

解決vue-cli不能初始化webpack模板的問題(vue init卡住了解決辦法)

imp 。。 問題 項目文件 offline 代理 下載 nis 不用 報這個錯誤 有人說是代理問題。我也不懂,但這個方法有用 1.去github上下載要初始化的模板 https://github.com/vuejs-templates/webpack 或者直接用git去c

關於出現Failed to instantiate SLF4J LoggerFactory問題原因解決辦法

下載 depend 1.4 地址 ins 解決辦法 org mir bsp 在創建spring boot 文檔進行配置的時候,因為使用spring boot 父級依賴的版本 <artifactId>spring-boot-starter-parent</a

import kerastensorflow出現kernel died restarting解決辦法

步驟 imp 方法 fff 方便 conda code pytho roman 故障描述 設備環境:Win10家庭版,Anaconda3,Spyder3.3.1,Python3.6. 當加載tensorflow模塊時,導致kernel崩潰,如運行一下任一行均會崩潰