获取JSON格式的树形
需求:前端需要一个JSON格式的Tree,例如组织机构维护的时候使用到的,需要一次性返回给前端。所以编写了一个算是半通用的查询方法
1、数据库Dao层:
/**
* 根据父ID获取子数据
* @param tableName 表名
* @param pColName 父字段名
* @param pColValue 父字段名的值
* @return
*/
@Override
public List<Map<String, Object>> getList(String tableName, String pColName, String pColValue) {
String sql = "select * from "+tableName+" where "+pColName+"=:pColValue"; Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("pColValue",pColValue);
return getNamedParameterJdbcTemplate().queryForList(sql, paramMap);
}
2、通用Service
/**
* 获取JSONArray
* @param tableName 表名
* @param pColName 父字段名
* @param colName 编号对应字段名
* @param pColValue 父字段名的值
* @return
* @throws Exception
*/
public JSONArray getJSONArray(String tableName, String pColName,String colName,String pColValue) throws Exception{
JSONArray array = new JSONArray(); List<Map<String, Object>> areaList = getList(tableName,pColName,pColValue);
for (Map<String, Object> map : areaList){
String newPvalue = map.get(colName).toString();
Map<String,Object> newMap = MapUtils.transToLowerCase(map);
JSONObject object = JSONObject.parseObject(JSON.toJSONString(newMap));
object.put("children",getAreaArrayByPAreaNo(tableName,pColName,colName,newPvalue));
array.add(object);
}
return array;
} /**
*
* @param tableName
* @param pColName
* @param colName
* @param pColValue
* @return
* @throws IllegalAccessException
*/
List<Map<String,Object>> getAreaArrayByPAreaNo(String tableName, String pColName,String colName, String pColValue) throws IllegalAccessException{
JSONObject object = new JSONObject();
List<Map<String,Object>> list = new ArrayList<>();
JSONArray tmp = new JSONArray();
List<Map<String,Object>> resultList = getList(tableName,pColName,pColValue);
if(resultList != null && resultList.size()>0){
for (Map<String,Object> map : resultList){
String newPvalue = map.get(colName).toString();
Map<String,Object> newMap = MapUtils.transToLowerCase(map);
List<Map<String, Object>> nodeList = getAreaArrayByPAreaNo(tableName,pColName,colName,newPvalue);
if (nodeList != null && nodeList.size()>0) {
newMap.put("children", nodeList);
}
list.add(newMap);
}
} return list;
}
3、Action调用
/**
* 加载行政区划
* @param request
* @return
* @throws Exception
*/
@RequestMapping(value = "/list_area", method = RequestMethod.GET)
@ResponseBody
public ResponseResult listarea(HttpServletRequest request) throws Exception {
String tableName = "BC_AREA";
String pColName = "P_AREA_NO";
String pColValue = "0";
String colName = "AREA_NO"; //获取树形
JSONArray array = commonService.getJSONArray(tableName,pColName,colName,pColValue); return ResultUtil.success(array);
}
最终返回的结果类似:


获取JSON格式的树形的更多相关文章
- jQuery获取JSON格式数据方法
getJSON方法: jQuery.getJSON(url,data,success(data,status,xhr)) $("button").click(function(){ ...
- struts2使用jsp和<s:property>标签获取json格式的返回数据
struts2使用jsp和<s:property>标签获取json格式的返回数据 1.struts2的action中 return "success"; 2.指向的返回 ...
- Android Volley获取json格式的数据
为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和j ...
- 获取json格式字符串的简单方法
有的时候需要找一些Json格式的字符串,可以打开任意一个网页进入到调试模式,然后看network相关的访问信息,就可以获取到. 比如: 在记笔记的时候,点击保存后,会发出一些请求,然后有相应的相应,任 ...
- 获取JSON格式的字符串各个属性对应的值
{"lastrdtime":1515998187379,"creditbalance":"$5.00","contactmode& ...
- JSP获取json格式的数据报错 Uncaught SyntaxError: Unexpected identifier
后台json字符串是 {"id":"cmdb_ci.`fully_qualified_domain_name`","field":" ...
- jQuery中使用Ajax获取JSON格式数据示例代码
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于“名称”和“值”的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中 ...
- 获取json格式的数据变成了undefined!?
今天在做一个简单的登陆功能时,当一切准备就绪,点击登陆时,什么都没发生..然后开始debug,打断点调试,然后发现了这个.向页面传递数据flag是true代表该用户的账号密码验证码等信息正确可以登录, ...
- C# 语言如何获取json格式的数据,不用javascript用c#实现。。。
{'state' : 1,'data':{'list':[{'id': 123, 'name': '诸葛天邪','level': 10,'country': 1,}]}} 比如我要获取里面的 id 该 ...
随机推荐
- SQL server存储过程,触发器,游标相关实例
use MySchool go alter proc P_stu as select AVG(StudentResult)as 平均分 from Result select * from Result ...
- 最小生成树(kruskal算法)
首先明确三个概念: 1.最小生成树的特点? 答:假设某个连通网络由n个顶点组成,则其生成树必含n个顶点和n-1条边,而最小生成树的n-1条有个要求:总和最小. 2.并查集的运用? 答:在该问题中,首先 ...
- jenkins+supervisor实现django项目的自动部署(ubuntu)
没有安装supervisor的话首先安装supervisor, apt install upservisor 安装supervisor大概率会出现问题,不推荐,最好是用pip 安装, 注意python ...
- SqlServer如何获取存储过程的返回值
1.Output参数返回值 1 CREATE PROCEDURE [dbo].[upInformation]( 2 @age int , 3 @id bigint OUTPUT 4 ) 5 AS 6 ...
- 7、字典和string的用法
#dic={1:'alex','age':35,'hobby':{'girl_name':'铁锤','age':45},'is_handsome':True} # dic={'age':'alex', ...
- axios formData提交数据 && axios设置charset无效???
但是这样会出现一个问题,什么问题呢? 我设置了请求头编码utf-8,但是没生效 content-type里面没有出现utf-8???????查了很多资料,说这是axios固有的bug,我....... ...
- 20175204 张湲祯 2018-2019-2《Java程序设计》
Arrays和String单元测试 一.类的作用 1.- String类 charAt String的charAt的作用是将字符串中第i个位置上的字符(从0开始计数)赋值给n,其用法为n=string ...
- 正则表达式匹配日期,支持闰年,格式为YYYYMMDD
年份:[\d]{4} 带31的月份:(0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])) 非2月不带31日的月份:((0[469])|11)((0[1-9])| ...
- memcached单机或热备的安装部署
一.部署准备 1.安装Java 不建议使用系统默认Open JDK版本,需要手工另行安装.JDK版本建议为1.7+,若Java已安装完毕,则无需重复安装. 安装过程如下: (1)获取JDK安装包: ( ...
- WPF 10天修炼 第六天- 系统属性和常用控件
WPF系统属性和常用控件 渐变的背景色 WPF中的前景色和背景色不同于传统Winform的设置,这些属性都是Brush类型的值.在XAML中,当为这些属性设置指定的颜色后将被转换为SolidColor ...