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

您的位置:首頁技術文章
文章詳情頁

java - 一個JSONArray的根據里面的類型轉化為一個新的JSONArray

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

問題描述

現有一個LIST:

[{ 'type':'呼吸系統', 'illness':'肺氣腫', 'quotaName': '血壓'},{ 'type':'呼吸系統', 'illness':'肺氣腫', 'quotaName': '血常規'}, { 'type':'呼吸系統', 'illness':'哮喘', 'quotaName': '血常規'}, { 'type':'循環系統', 'illness':'高血壓', 'quotaName': '心電圖'}, { 'type':'循環系統', 'illness':'高血壓', 'quotaName': '心電彩超'} ]

我想得到的list:

[{ 'type':'呼吸系統', 'illnessList':[{ 'name':'肺氣腫', 'quotaList':[ { 'name':'血壓' }, { 'name':'血常規' } ]},{ 'name':'哮喘', 'quotaList':[{ 'name':'血常規'} ]} ]},{ 'type':'循環系統', 'illnessList':[{ 'name':'高血壓', 'quotaList':[{ 'name':'心電圖'},{ 'name':'心電彩超'} ]} ]} ]

原有的list,所有疾病系統和疾病,以及疾病檢測指標都是合在一起的

我想根據類型分類得到一個list,但始終找不到思路

循環,遍歷多次以后感覺腦袋糊掉了,請求各位大大給個思路

問題解答

回答1:

按照題主的輸入輸出要求,從一個JSONArray轉換到另一個JSONArray...感覺輸出的JSONArray無非是按照了兩個屬性進行了歸類,其實結構應該類似于Map<String,Map<String,List<String>>,所以我的想法就是把輸入的JSONArray要轉化為Map<String, Map<String,List<String>>的結構即可...而看到我剛才說的按照屬性歸類...那...很顯然...噔噔噔!!!...心中自然浮現了Java8的Collectors.groupingBy...直接無腦groupingBy就行了嘛

下面是我的小思路和代碼:既然是面向對象,所以我先創建了一個輸入的Bo對象FromDataBo

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

接著是按照輸出格式創建的輸出對象ToDataBo (帶注釋的方法先可以不看...只是轉化用的,可以先看數據結構)

@Getter@Setterpublic class ToDataBo { private String type; private List<ToDataIllnessBo> illnessList; /** * map轉化為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()); } /** * 一個Map.Entry<String, Map<String, List<String>>>對應轉化為一個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;/** * 一個Map.Entry<String, List<String>>對應轉化為一個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; }}

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

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

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

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

測試結果:

java - 一個JSONArray的根據里面的類型轉化為一個新的JSONArray

就醬...

回答2:

這個不是后端吐出來的嗎?沒必要你去做處理啊,跟后端說下就好啊。或者你就用他們吐的,實現你的效果就好。無非你想更省事。直接一個循環處理。用上面的數組,在循環里做處理 跟你處理成后來的 是一樣的。不如前置處理。性能高。下面的是標準的風格。界面貼出來。

回答3:

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

var convertData = function(data){ let result = []; var level1Obj = {}; var level2Obj = {}; var level3Obj = {}; data.forEach(function (item, index, arr) {//一層對象level1Obj[item.type] = {};level1Obj[item.type]['type'] = item.type;//2層對象level2Obj[item.type+item.illness] = {};level2Obj[item.type+item.illness]['p1'] = item.type;level2Obj[item.type+item.illness]['type'] = item.illness;//3層對象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);

寫的不好,如有更優的方法,希望交流交流

標簽: java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
在线一区二区三区视频| 久久天堂影院| 99精品一区| 国产一区调教| 国产一区二区精品福利地址| 精品亚洲成人| 日韩黄色大片| 久久精品不卡| 亚洲精品影视| 国产欧美一级| 日本在线高清| 一本色道精品久久一区二区三区| aa亚洲婷婷| 欧美日韩精品一区二区三区在线观看| 美女久久久久久| 欧美日韩精品在线一区| 亚洲我射av| 精品国产亚洲一区二区三区大结局| 成人日韩av| 中文亚洲免费| 欧美日一区二区在线观看| 成人在线视频中文字幕| 在线亚洲成人| 国产精品亚洲四区在线观看 | 国产精品探花在线观看| 欧美男人天堂| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产视频一区二区在线播放| 日本蜜桃在线观看视频| 一区二区三区四区日韩| 精品日本视频| 欧美一区久久久| 亚洲专区视频| 日本蜜桃在线观看视频| 中文字幕av亚洲精品一部二部| 国产欧美日韩精品一区二区三区| 久久久久国产精品一区三寸| 亚洲美女久久| 91精品婷婷色在线观看| 日本欧美在线| 亚洲国产一区二区在线观看| 免费在线亚洲欧美| 一级成人国产| 亚洲手机视频| 久久av网址| 日韩亚洲精品在线| 久久男人av| 天堂久久av| av亚洲免费| 色爱综合网欧美| 日韩av网站在线免费观看| 日韩三区免费| 国产精品一区二区美女视频免费看 | 国产综合精品| 国产精品激情电影| 久久电影一区| 久久久久久久久久久妇女| 国产欧美日韩一区二区三区在线| 欧美日韩精品免费观看视频完整| 国产精品视频一区二区三区综合| 男人操女人的视频在线观看欧美| 欧美日韩精品免费观看视完整| 日本久久二区| 人人精品人人爱| 久久激情婷婷| 韩国三级一区| 福利片在线一区二区| 国产精品亚洲综合久久| 亚洲人成网站在线在线观看| 久久精选视频| 久久久久久自在自线| 国产精品三级| 中文字幕亚洲在线观看| 99成人在线| 国产一区导航| 先锋亚洲精品| 亚洲欧美日韩高清在线| 伊人久久高清| 一本大道色婷婷在线| 日韩成人精品一区| 高清av一区| 久久精品系列| 免费视频一区二区三区在线观看| 国产亚洲字幕| 国产精品一级| 国产精品久久久久久av公交车| 日韩精品久久久久久| 欧美天堂亚洲电影院在线观看| 亚洲电影在线| 午夜精品亚洲| 免费国产自久久久久三四区久久| 欧美日韩精品在线一区| 久久久久久久久99精品大| 久久狠狠婷婷| 亚洲欧洲一区二区天堂久久| 好看不卡的中文字幕| 欧美日韩高清| 亚洲自拍另类| 蜜桃传媒麻豆第一区在线观看| 亚洲免费黄色| 老鸭窝亚洲一区二区三区| 亚洲一区国产一区| 91成人超碰| 亚洲欧美日本视频在线观看| 热久久免费视频| 欧美影院视频| 精品一区二区三区四区五区| 精品三级在线| 日韩av福利| 影音先锋国产精品| 日韩中文字幕无砖| 国产精品玖玖玖在线资源| 欧美一区免费| 欧美一区二区三区久久精品| 国产亚洲激情| 狠狠爱成人网| 1024精品久久久久久久久| 麻豆国产在线| 亚洲综合婷婷| 国产欧美日韩在线观看视频| 久久性天堂网| 亚洲综合福利| 国产精品久久久久久久久久齐齐| 国产精品流白浆在线观看| 欧美韩日一区| 一区在线免费| 国产精品手机在线播放| 亚洲精品88| 蜜桃视频在线观看一区二区| 国产精品一级| 亚洲小说欧美另类婷婷| 日韩精品第一| 国产日韩欧美一区二区三区 | 日韩国产在线| 亚洲综合电影一区二区三区| 亚洲欧洲专区| 久久精品亚洲| 欧美综合国产| 激情不卡一区二区三区视频在线| 亚洲香蕉网站| 日韩二区三区在线观看| 国产精品99在线观看| 中文无码日韩欧| 精品少妇一区| 国产手机视频一区二区 | 蜜桃视频第一区免费观看| 免费在线观看一区| 99国产精品私拍| 精品免费在线| 中文字幕成人| 成人啊v在线| 欧美专区一区| 伊人精品一区| 国产精品毛片久久久| 午夜久久久久| 麻豆视频在线看| 欧美视频一区| 一区在线免费观看| 国产一区二区三区不卡av| 最新国产精品视频| 亚洲成人av观看| 国产精品麻豆成人av电影艾秋| 女同性一区二区三区人了人一| 麻豆国产欧美日韩综合精品二区| 欧美日韩国产高清| 精品免费在线| 啪啪亚洲精品| 午夜国产精品视频免费体验区| 免费看久久久| 亚洲免费中文| 高清av一区二区三区| 免费日韩成人| 亚洲开心激情| 亚洲少妇一区| 91精品蜜臀一区二区三区在线| 久久99久久人婷婷精品综合| 视频一区欧美日韩| 欧美成人高清| 日韩国产网站| 精品免费av一区二区三区| 人人爱人人干婷婷丁香亚洲| 国产视频一区在线观看一区免费| 精品国产午夜肉伦伦影院 | 日韩制服丝袜av| 欧美一区二区三区激情视频| 国产成人精品三级高清久久91| 日韩av影院| 中文字幕av亚洲精品一部二部| 婷婷色综合网| 欧美日韩精品免费观看视完整 | 国产亚洲精品美女久久| 一区二区国产在线| 美女网站久久| 国产一级久久| 亚洲激情婷婷| 99久精品视频在线观看视频| 麻豆中文一区二区| 国产欧美二区| 国产伦一区二区三区| 亚洲免费专区|