日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

java - 一個(gè)JSONArray的根據(jù)里面的類型轉(zhuǎn)化為一個(gè)新的JSONArray

瀏覽:192日期:2023-10-23 10:38:59

問題描述

現(xiàn)有一個(gè)LIST:

[{ 'type':'呼吸系統(tǒng)', 'illness':'肺氣腫', 'quotaName': '血壓'},{ 'type':'呼吸系統(tǒng)', 'illness':'肺氣腫', 'quotaName': '血常規(guī)'}, { 'type':'呼吸系統(tǒng)', 'illness':'哮喘', 'quotaName': '血常規(guī)'}, { 'type':'循環(huán)系統(tǒng)', 'illness':'高血壓', 'quotaName': '心電圖'}, { 'type':'循環(huán)系統(tǒng)', 'illness':'高血壓', 'quotaName': '心電彩超'} ]

我想得到的list:

[{ 'type':'呼吸系統(tǒng)', 'illnessList':[{ 'name':'肺氣腫', 'quotaList':[ { 'name':'血壓' }, { 'name':'血常規(guī)' } ]},{ 'name':'哮喘', 'quotaList':[{ 'name':'血常規(guī)'} ]} ]},{ 'type':'循環(huán)系統(tǒng)', 'illnessList':[{ 'name':'高血壓', 'quotaList':[{ 'name':'心電圖'},{ 'name':'心電彩超'} ]} ]} ]

原有的list,所有疾病系統(tǒng)和疾病,以及疾病檢測指標(biāo)都是合在一起的

我想根據(jù)類型分類得到一個(gè)list,但始終找不到思路

循環(huán),遍歷多次以后感覺腦袋糊掉了,請(qǐng)求各位大大給個(gè)思路

問題解答

回答1:

按照題主的輸入輸出要求,從一個(gè)JSONArray轉(zhuǎn)換到另一個(gè)JSONArray...感覺輸出的JSONArray無非是按照了兩個(gè)屬性進(jìn)行了歸類,其實(shí)結(jié)構(gòu)應(yīng)該類似于Map<String,Map<String,List<String>>,所以我的想法就是把輸入的JSONArray要轉(zhuǎn)化為Map<String, Map<String,List<String>>的結(jié)構(gòu)即可...而看到我剛才說的按照屬性歸類...那...很顯然...噔噔噔?。?!...心中自然浮現(xiàn)了Java8的Collectors.groupingBy...直接無腦groupingBy就行了嘛

下面是我的小思路和代碼:既然是面向?qū)ο螅晕蚁葎?chuàng)建了一個(gè)輸入的Bo對(duì)象FromDataBo

@Getter@Setterpublic class FromDataBo { private String type; private String illness; private String quotaName;}

接著是按照輸出格式創(chuàng)建的輸出對(duì)象ToDataBo (帶注釋的方法先可以不看...只是轉(zhuǎn)化用的,可以先看數(shù)據(jù)結(jié)構(gòu))

@Getter@Setterpublic class ToDataBo { private String type; private List<ToDataIllnessBo> illnessList; /** * map轉(zhuǎn)化為List<ToDataBo> * @param map * @return */ public static List<ToDataBo> createByMap(Map<String, Map<String, List<String>>> map){return map.entrySet().stream().map(ToDataBo::of).collect(Collectors.toList()); } /** * 一個(gè)Map.Entry<String, Map<String, List<String>>>對(duì)應(yīng)轉(zhuǎn)化為一個(gè)ToDataBo * @param entry * @return */ public static ToDataBo of(Map.Entry<String, Map<String, List<String>>> entry){ToDataBo dataBo = new ToDataBo();dataBo.setType(entry.getKey());dataBo.setIllnessList(entry.getValue().entrySet().stream().map(ToDataIllnessBo::of).collect(Collectors.toList()));return dataBo; }@Getter @Setter static class ToDataIllnessBo{private String name;private List<ToDataQuotaBo> quotaList;/** * 一個(gè)Map.Entry<String, List<String>>對(duì)應(yīng)轉(zhuǎn)化為一個(gè)ToDataIllnessBo * @param entry * @return */public static ToDataIllnessBo of(Map.Entry<String, List<String>> entry){ ToDataIllnessBo dataIllnessBo = new ToDataIllnessBo(); dataIllnessBo.setName(entry.getKey()); dataIllnessBo.setQuotaList(entry.getValue().stream().map(ToDataQuotaBo::new).collect(Collectors.toList())); return dataIllnessBo;} } @Getter @Setter @AllArgsConstructor static class ToDataQuotaBo {private String name; }}

輸入輸出對(duì)象有了,那就可以進(jìn)行最重要按屬性分類,我先把轉(zhuǎn)化為Map<String,Map<String,List<String>>的代碼貼出來...主要就是這個(gè)嘛...注釋嘛,熟悉lamdba的估計(jì)一眼就看出來...不熟悉再多了解哈吧

Map<String, Map<String, List<String>>> collect = fromDataBos.stream().collect(// 按照type分類Collectors.groupingBy(FromDataBo::getType,// 按照type分類后,同一類的數(shù)據(jù)再按照illness分類Collectors.groupingBy(FromDataBo::getIllness,// 按照type分類,再按照illness分類后,同一類的數(shù)據(jù)取其中的QuotaName并轉(zhuǎn)化為集合Collectors.mapping(FromDataBo::getQuotaName, Collectors.toList()))));

最后是完整的測試代碼和結(jié)果,最后的result對(duì)象就是你需要的輸出JSONArray

public class Test1 { public static void main(String[] args) {String from = '[n' +'{n' +' 'type':'呼吸系統(tǒng)',n' +' 'illness':'肺氣腫',n' +' 'quotaName': '血壓'n' +'},n' +'{n' +' 'type':'呼吸系統(tǒng)',n' +' 'illness':'肺氣腫',n' +' 'quotaName': '血常規(guī)'n' +'},n' +' {n' +' 'type':'呼吸系統(tǒng)',n' +' 'illness':'哮喘',n' +' 'quotaName': '血常規(guī)'n' +'},n' +' {n' +' 'type':'循環(huán)系統(tǒng)',n' +' 'illness':'高血壓',n' +' 'quotaName': '心電圖'n' +'},n' +' {n' +' 'type':'循環(huán)系統(tǒng)',n' +' 'illness':'高血壓',n' +' 'quotaName': '心電彩超'n' +'}n' +' ]';// 把輸入的JSONArray字符串轉(zhuǎn)化為FromDataBo集合List<FromDataBo> fromDataBos = JSONArray.parseArray(from, FromDataBo.class);// 歸類Map<String, Map<String, List<String>>> collect = fromDataBos.stream().collect(// 按照type分類Collectors.groupingBy(FromDataBo::getType,// 按照type分類后,同一類的數(shù)據(jù)再按照illness分類Collectors.groupingBy(FromDataBo::getIllness,// 按照type分類,再按照illness分類后,同一類的數(shù)據(jù)取其中的QuotaName并轉(zhuǎn)化為集合Collectors.mapping(FromDataBo::getQuotaName, Collectors.toList()))));// 歸類后的map轉(zhuǎn)化為輸出對(duì)象ToDataBo集合List<ToDataBo> toDataBos = ToDataBo.createByMap(collect);// 我是輸出對(duì)象,我在這JSONArray result = JSONArray.parseArray(JSONArray.toJSONString(toDataBos));System.out.println(result); }}

測試結(jié)果:

java - 一個(gè)JSONArray的根據(jù)里面的類型轉(zhuǎn)化為一個(gè)新的JSONArray

就醬...

回答2:

這個(gè)不是后端吐出來的嗎?沒必要你去做處理啊,跟后端說下就好啊。或者你就用他們吐的,實(shí)現(xiàn)你的效果就好。無非你想更省事。直接一個(gè)循環(huán)處理。用上面的數(shù)組,在循環(huán)里做處理 跟你處理成后來的 是一樣的。不如前置處理。性能高。下面的是標(biāo)準(zhǔn)的風(fēng)格。界面貼出來。

回答3:

代碼地址http://jsbin.com/roqejoficu/e...

var convertData = function(data){ let result = []; var level1Obj = {}; var level2Obj = {}; var level3Obj = {}; data.forEach(function (item, index, arr) {//一層對(duì)象level1Obj[item.type] = {};level1Obj[item.type]['type'] = item.type;//2層對(duì)象level2Obj[item.type+item.illness] = {};level2Obj[item.type+item.illness]['p1'] = item.type;level2Obj[item.type+item.illness]['type'] = item.illness;//3層對(duì)象level3Obj[index] = {};level3Obj[index]['p1'] = item.type;level3Obj[index]['p2'] = item.illness;level3Obj[index]['type'] = item.quotaName; });for (var level1 in level1Obj) {var o1 = {};o1.type = level1Obj[level1].type;o1.list = [];result.push(o1);for (var level2 in level2Obj) { if (level2Obj[level2].p1 == level1Obj[level1].type) {var o2 = {};o2.type = level2Obj[level2].type;o2.list = [];o1.list.push(o2);for (var level3 in level3Obj) { if (level3Obj[level3].p1 == level1Obj[level1].type && level3Obj[level3].p2 == level2Obj[level2].type) {var o3 = {};o3.type = level3Obj[level3].type;o2.list.push(o3); }} }} } console.log(result); return result;},var result = convertData(data);

寫的不好,如有更優(yōu)的方法,希望交流交流

標(biāo)簽: java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
狂野欧美性猛交xxxx| 日韩av影院| 精品美女久久| 免费一级欧美片在线观看网站| 国产精品日韩精品在线播放| 麻豆精品在线播放| 国产成人精品一区二区三区免费 | 激情欧美丁香| 香蕉精品久久| 一区在线视频观看| 日韩中文欧美在线| 日韩和欧美一区二区三区| 欧美久久精品| 老司机免费视频一区二区三区| 久久免费视频66| av中文字幕在线观看第一页| 99久久精品国产亚洲精品| 99国产精品久久久久久久成人热| 蜜桃tv一区二区三区| 亚洲欧美久久久| 日韩精品亚洲专区在线观看| 国产精品成人**免费视频| 91日韩在线| 黄色免费成人| 日韩av三区| 精品久久视频| 久久精品国产99久久| 视频一区中文字幕国产| 久久国产精品色av免费看| 高清不卡亚洲| 国产亚洲在线观看| 欧美日韩一区二区三区不卡视频| 精品日本视频| 久久久蜜桃一区二区人| 日韩视频中文| 国产麻豆一区二区三区| 日韩亚洲一区在线| 免费欧美日韩| 久久99久久久精品欧美| 成人羞羞视频播放网站| 亚洲乱码视频| 高清日韩中文字幕| 模特精品在线| 九九久久国产| 99亚洲视频| 国产精品白浆| 在线一区电影| 久久av免费看| 91九色精品国产一区二区| 亚洲国产一区二区在线观看| 蜜桃免费网站一区二区三区| 久久亚州av| 久久午夜精品| 美女久久99| 视频一区免费在线观看| 国产精品久久久网站| 一区二区三区视频免费观看| 日韩av网站在线免费观看| 色婷婷久久久| 欧美在线观看天堂一区二区三区| 久久激情网站| 国产精品久一| 亚洲欧美日本视频在线观看| 国产极品一区| 亚洲一区中文| 国产一区国产二区国产三区| 中文字幕av一区二区三区四区| 国产a亚洲精品| 日产欧产美韩系列久久99| 欧美一级精品| 美女av一区| 亚洲精品动态| 欧美一区二区三区高清视频| 蜜桃精品视频| 日韩国产欧美视频| 欧美成人亚洲| 国产一区二区三区黄网站 | 亚洲日本三级| 国产一区亚洲| 91欧美日韩| 国产亚洲欧美日韩精品一区二区三区| 在线日韩视频| 精品午夜久久| 国产亚洲欧美日韩精品一区二区三区 | 国产一区二区中文| 国产成人精品福利| 国产欧美一区二区三区国产幕精品| 玖玖玖国产精品| 欧美日韩精品一区二区视频| 国产成人精品免费视| 国产精品久久久久77777丨| 亚洲精品系列| 99精品99| 欧美成人亚洲| 999久久久免费精品国产| 国产精品中文字幕亚洲欧美| 一本一道久久a久久| 狠狠色狠狠色综合日日tαg| 欧美天堂视频| 欧美精品97| 欧美伊人久久| 日韩一区二区三免费高清在线观看 | 色偷偷偷在线视频播放| 久久不见久久见免费视频7| 日韩欧美2区| 婷婷综合福利| 亚洲精品少妇| 亚洲18在线| 蜜臀久久99精品久久久久久9| 伊人久久婷婷| 欧美粗暴jizz性欧美20| 欧美特黄一级大片| 久久精品亚洲人成影院| 精品捆绑调教一区二区三区| аⅴ资源天堂资源库在线| 麻豆成人综合网| 国产日韩免费| 国产精品主播| 国产精品成人自拍| 国产劲爆久久| 精品国产网站| 深夜福利视频一区二区| 久久国产乱子精品免费女| 视频一区中文| 亚洲丝袜美腿一区| 午夜久久影院| 亚洲专区视频| 麻豆免费精品视频| se01亚洲视频| 天堂va在线高清一区| 国产乱人伦精品一区| 91精品国产自产观看在线| 精品久久中文| 在线视频观看日韩| 好看的av在线不卡观看| 91精品国产乱码久久久久久久| 99久久夜色精品国产亚洲狼| 欧美在线网站| 蜜桃视频一区二区三区| 日韩国产精品久久久久久亚洲| 国产欧美日韩| 精品国产乱码久久久| 欧美日韩国产观看视频| 成人羞羞在线观看网站| 亚洲一区亚洲| 91国内精品| 久久精品国产999大香线蕉| 欧美aⅴ一区二区三区视频| a天堂资源在线| 婷婷亚洲综合| 视频精品一区| 美女视频网站久久| av一区在线| 视频一区二区三区入口| 久久精品99国产精品| 国产成人精品一区二区免费看京 | 久久久久久一区二区| 久久麻豆精品| 亚洲另类黄色| 国产中文字幕一区二区三区| 天堂av在线| 丝袜a∨在线一区二区三区不卡| 欧美日本不卡| 欧产日产国产精品视频| 蜜臀a∨国产成人精品| 国产精品a级| 久久视频精品| 日韩精品乱码av一区二区| 电影91久久久| 久久国产精品久久久久久电车 | 你懂的亚洲视频| 美女网站视频一区| 深夜日韩欧美| 精品视频一区二区三区在线观看| 国产91久久精品一区二区| 香蕉久久一区| 日本在线高清| 日韩欧美2区| av最新在线| 亚洲精品少妇| 98精品视频| 亚洲精品成人一区| 91看片一区| 久久国产乱子精品免费女| 蜜桃精品在线| 欧美亚洲福利| 欧美日韩黑人| 麻豆久久久久久| 99精品99| 高清精品久久| 亚洲精品自拍| 久久国产电影| 麻豆精品视频在线观看| 先锋影音久久久| 成人在线免费观看91| 日韩精品一级二级| 秋霞影院一区二区三区| 欧美日韩精品一区二区三区在线观看| 99成人在线视频| 国产精品va|