java 將jsonarray 轉(zhuǎn)化為對應(yīng)鍵值的jsonobject方法
有時(shí)候我們再操作數(shù)據(jù)的時(shí)候,很多數(shù)據(jù)是jsonarry 格式的
如:
[{"name":"測試數(shù)據(jù)","id":1},{"name":"測試數(shù)據(jù)2","id":2}]
這樣的格式很類型表格數(shù)據(jù)類型。但是我們要取id 為1的name 這樣我們就要先變量以便了。如果需要多次操作這樣的類型,顯得很麻煩。
這里的數(shù)據(jù)我們可以看出id 是唯一的。那么我們可以想辦法將其轉(zhuǎn)為jsonobject 這樣我們就很方便 根據(jù)指定id 獲取 name 了。
public static JSONObject toJSONObject(JSONArray jsonArray, String key) { JSONObject jsonObject = new JSONObject(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject temp = jsonArray.getJSONObject(i); String[] keyValues = StringUtil.StringToArray(key); if (keyValues != null) { for (String item : keyValues) { String[] k = item.split(":"); String[] keys = k[0].split("_"); String keyName = k[0]; if (keys.length == 2) { keyName = keys[0]; } String jsonKeyName = temp.getString(keyName); if (keys.length == 2) { jsonKeyName += "_" + keys[1]; } jsonObject.put(jsonKeyName, temp.getString(k[1])); } } } return jsonObject; }
這個(gè)方法就可以簡單的實(shí)現(xiàn),但是可能不是最好的實(shí)現(xiàn)方法。歡迎對其提出寶貴的建議。
這里列出各個(gè)案例
案例1:
原數(shù)據(jù): [{"name":"測試數(shù)據(jù)","id":1},{"name":"測試數(shù)據(jù)2","id":2}] 調(diào)用方法: toJSONObject(jsonArray, "id:name") 結(jié)果: {"1":"測試數(shù)據(jù)","2":"測試數(shù)據(jù)2"}
案例2:(這僅是我們自己業(yè)務(wù)需要添加上的)
原數(shù)據(jù): [{"name":"測試數(shù)據(jù)","id":1},{"name":"測試數(shù)據(jù)2","id":2}] 調(diào)用方法: toJSONObject(jsonArray, "id_test:name") 結(jié)果: {"1_test":"測試數(shù)據(jù)","2_test":"測試數(shù)據(jù)2"}
案例三:
原數(shù)據(jù): [{"no":100,"name":"測試數(shù)據(jù)","id":1,"desc":"測試描述"},{"no":101,"name":"測試數(shù)據(jù)2","id":2,"desc":"測試描述2"}] 調(diào)用方法: toJSONObject(jsonArray, "id:name,no:desc") 結(jié)果: {"1":"測試數(shù)據(jù)","100":"測試描述","2":"測試數(shù)據(jù)2","101":"測試描述2"}
以上這篇java 將jsonarray 轉(zhuǎn)化為對應(yīng)鍵值的jsonobject方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java 動態(tài)生成類和實(shí)例, 并注入方法操作示例
這篇文章主要介紹了Java 動態(tài)生成類和實(shí)例, 并注入方法操作,結(jié)合實(shí)例形式分析了Java 動態(tài)生成類和實(shí)例以及動態(tài)注入相關(guān)操作技巧,需要的朋友可以參考下2020-02-02淺談java中類名.class, class.forName(), getClass()的區(qū)別
下面小編就為大家?guī)硪黄獪\談java中類名.class, class.forName(), getClass()的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05java 數(shù)據(jù)庫連接與增刪改查操作實(shí)例詳解
這篇文章主要介紹了java 數(shù)據(jù)庫連接與增刪改查操作,結(jié)合實(shí)例形式詳細(xì)分析了java使用jdbc進(jìn)行數(shù)據(jù)庫連接及增刪改查等相關(guān)操作實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2019-11-11SpringBoot定時(shí)任務(wù)實(shí)現(xiàn)數(shù)據(jù)同步的方法
業(yè)務(wù)需求是,通過中臺調(diào)用api接口獲得,設(shè)備數(shù)據(jù),要求現(xiàn)實(shí)設(shè)備數(shù)據(jù)的同步,這篇文章主要介紹了SpringBoot定時(shí)任務(wù)實(shí)現(xiàn)數(shù)據(jù)同步的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Java 實(shí)戰(zhàn)范例之員工管理系統(tǒng)的實(shí)現(xiàn)
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+Springboot+ssm+mysql+maven+redis實(shí)現(xiàn)一個(gè)前后端分離的員工管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11Struts2實(shí)現(xiàn)文件上傳時(shí)顯示進(jìn)度條功能
這篇文章主要為大家詳細(xì)介紹了Struts2實(shí)現(xiàn)文件上傳時(shí)顯示進(jìn)度條功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05java數(shù)據(jù)結(jié)構(gòu)和算法中數(shù)組的簡單入門
在本文里小編給大家整理了關(guān)于java數(shù)據(jù)結(jié)構(gòu)和算法中數(shù)組的簡單入門知識點(diǎn)整理,需要的朋友們學(xué)習(xí)下。2019-06-06