1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
private String getDictLabelByJson(String dictJson, String key, String keyField, String labelField, String childrenField) { if (StringUtils.isEmpty(dictJson) || StringUtils.isEmpty(key)) { return key; } try { List<Map<String, Object>> dictList = (List<Map<String, Object>>) JSONArray.parse(dictJson); return findLabelByKey(dictList, key, keyField, labelField, childrenField); } catch (Exception e) { log.error("解析字典JSON失败", e); return key; } }
private String findLabelByKey(List<Map<String, Object>> dictList, String key, String keyField, String labelField, String childrenField) { if (CollUtil.isEmpty(dictList)) { return key; } for (Map<String, Object> dict : dictList) { String dictKey = (String) dict.get(keyField); if (key.equals(dictKey)) { return (String) dict.get(labelField); } if (StringUtils.isNotEmpty(childrenField)) { @SuppressWarnings("unchecked") List<Map<String, Object>> children = (List<Map<String, Object>>) dict.get(childrenField); if (CollUtil.isNotEmpty(children)) { String childLabel = findLabelByKey(children, key, keyField, labelField, childrenField); if (!childLabel.equals(key)) { return childLabel; } } } } return key; }
|