原型及输出效果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/970de213caae99c6c7e90014c0e1a46a.png)
- 输出效果-父子三级树形结构并保证其顺序
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/411f0a94d416b6a695162f1010038f27.png)
代码实现
@Data
public class ScreenGuidanceVO {
private String brandName;
private String modelName;
private String pictureUrl;
}
JSONArray js = new JSONArray();
List<ScreenGuidanceVO> screenGuidanceList = service.getXXXList(screenGuidanceVO);
Map<String, List<ScreenGuidanceVO>> lists = screenGuidanceList.stream().collect(Collectors.groupingBy(ScreenGuidanceVO::getBrandName,LinkedHashMap::new,Collectors.toCollection(ArrayList::new)));
for (Map.Entry<String, List<ScreenGuidanceVO>> entry : lists.entrySet()) {
JSONObject brandObject = new JSONObject();
List<ScreenGuidanceVO> value = entry.getValue();
String keys = entry.getKey();
brandObject.put("brandName",keys);
JSONArray modelArray = new JSONArray();
Map<String, List<ScreenGuidanceVO>> modelList = value.stream().collect(Collectors.groupingBy(ScreenGuidanceVO::getModelName,LinkedHashMap::new,Collectors.toCollection(ArrayList::new)));
for (Map.Entry<String, List<ScreenGuidanceVO>> modelEntry : modelList.entrySet()) {
JSONObject modelObject = new JSONObject();
List<ScreenGuidanceVO> modelValue = modelEntry.getValue();
String modelKey = modelEntry.getKey();
modelObject.put("modelName",modelKey);
List<String> downNo = modelValue.stream().map(ScreenGuidanceVO::getPictureUrl).distinct().collect(Collectors.toList());
modelObject.put("pictureList",downNo);
modelArray.add(modelObject);
}
brandObject.put("modelList",modelArray);
js.add(brandObject);
}
写在最后
- 省市区父子三级树形结构,也可按照此逻辑实现,json拼接逻辑可按照各自需求自行拼接。
- 如有不足之处或更好解决方案,请大佬批评示下!