/**
* * 生成树形结构 在不知道跟节点的状况下
* @param list 源数据
* @param nodeList 跟节点数据
* @param childName 子节点名称
* @param key 节点key
* @param up_key 上级节点key
* @param child_level 节点级别 1,2,3...
* @return
*/
public static JSONArray recursionCreateArrayNotRoot(JSONArray list, JSONArray nodeList, String childName, String key, String up_key, int child_level) {
if (nodeList == null) {
//跟节点为空的状况下 ,遍历查询跟节点
nodeList = new JSONArray();//做为跟节点的存在
for (int i = 0; i < list.size(); i++) {
boolean mark = false;
JSONObject n = list.getJSONObject(i);
for (int j = 0; j < list.size(); j++) {
JSONObject m = list.getJSONObject(j);
if (n.optString(up_key).equals(m.optString(key))) {
mark = true;
break;
}
}
if (!mark) {
n.put("child_level", child_level);
nodeList.add(n);//添加的是没有上级的
}
}
list.removeAll(nodeList);//将根节点移除出列表
}
//为根节点寻找下级
for (int i = 0; i < nodeList.size(); i++) {
JSONObject n = nodeList.getJSONObject(i);
JSONArray child = n.optJSONArray(childName);
if (child == null) {
child = new JSONArray();
}
for (int j = 0; j < list.size(); j++) {
JSONObject m = list.getJSONObject(j);
m.put("child_level", child_level + 1);
if (n.optString(key).equals(m.optString(up_key))) {
child.add(m);
}
}
n.put(childName, child);
list.removeAll(child);//跟节点的下级找到后移除列表
recursionCreateArrayNotRoot(list, n.optJSONArray(childName), childName, key, up_key, child_level + 1);//不断的寻找下级
}
return nodeList;
}
复制代码
调用方法 JSONArray result = jJson.recursionCreateArrayNotRoot(array, null, "child","org_key", "up_org_key", 1);
复制代码
[
{
"org_key":"2001",
"up_org_key":"0",
"usr_org_key":"1001",
"usr_org_name":"光明城",
"user_org_code":"10",
"boss_id":"10010",
"org_name":"光明城1",
"org_code":"12",
"area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw",
"org_level":"1",
"area_name":"虎邱村"
},
{
"org_key":"2002",
"up_org_key":"2001",
"usr_org_key":"1002",
"usr_org_name":"晋安区",
"user_org_code":"10-0001",
"boss_id":"10010",
"org_name":"晋安区",
"org_code":"12-1",
"area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw",
"org_level":"2",
"area_name":"虎邱村"
},
{
"org_key":"2003",
"up_org_key":"0",
"usr_org_key":"",
"usr_org_name":"",
"user_org_code":"",
"boss_id":"10010",
"org_name":"鼓楼区",
"org_code":"11",
"area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw",
"org_level":"1",
"area_name":"虎邱村"
},
{
"org_key":"org_fTZXL9Vea8mLlxVCeGEWbFr4cQHQDQhZ",
"up_org_key":"2001",
"usr_org_key":"org_iU57sIDvHmM6LljFPSZbgNVieVhjKyBQ",
"usr_org_name":"福州测试小区",
"user_org_code":"10-0003",
"boss_id":"10010",
"org_name":"福州测试小区",
"org_code":"12-2",
"area_key":"U7okhSHxC8Vs1c3YXxQleRiiIYelvmdL",
"org_level":"2",
"area_name":"文楼村"
},
{
"org_key":"org_7I7UNQloRMuZBC6RQlp6gZf9KDgiI3hm",
"up_org_key":"2001",
"usr_org_key":"",
"usr_org_name":"",
"user_org_code":"",
"boss_id":"10010",
"org_name":"花园小区",
"org_code":"12-5",
"area_key":"IfwmlJrHl6137YZ7FvmcW1QjlNYoGWkS",
"org_level":"2",
"area_name":"福耀社区"
},
{
"org_key":"org_fx5fjorqBRWJgWR4CxMx3Wquq0CimhnE",
"up_org_key":"2003",
"usr_org_key":"org_HHsupVt4HPzfcpSZShchbLivotsVdaFK",
"usr_org_name":"大儒世家",
"user_org_code":"003",
"boss_id":"10010",
"org_name":"五凤街道",
"org_code":"11-1",
"area_key":"DxeRGfT5mP2tq1Yw4b7hqzDckZiL2T9W",
"org_level":"2",
"area_name":"福和社区"
},
{
"org_key":"org_gG6L68Wt0zjmCxp0dIWM0XKDCToyFndZ",
"up_org_key":"org_gG6L68Wt0zjmCxp0dIWM0XKDCToyFndZ",
"usr_org_key":"",
"usr_org_name":"",
"user_org_code":"",
"boss_id":"10010",
"org_name":"部门A",
"org_code":"001",
"area_key":"vI59WqwHEDLvdyc3SI2Z0p1u8ZQl6dvl",
"org_level":"2",
"area_name":"柏渡村"
},
{
"org_key":"org_IXGMspHF6FZFrhZEWJGQpijR1hH0aQ1C",
"up_org_key":"org_7I7UNQloRMuZBC6RQlp6gZf9KDgiI3hm",
"usr_org_key":"org_EdLEdVgGciifkYeRmluNawW6Tjgxq4Fu",
"usr_org_name":"西洪小区",
"user_org_code":"0021",
"boss_id":"10010",
"org_name":"区委会",
"org_code":"12-5-1",
"area_key":"pMhxXlafOcYeQ0vNWf3nz1tIdwvS0JdN",
"org_level":"3",
"area_name":"玉峰村"
},
{
"org_key":"org_hCtV75g3cB6bBqJHarfRvKwG1YjEKwwX",
"up_org_key":"org_IXGMspHF6FZFrhZEWJGQpijR1hH0aQ1C",
"usr_org_key":"",
"usr_org_name":"",
"user_org_code":"",
"boss_id":"10010",
"org_name":"某某部门",
"org_code":"12-5-1-1",
"area_key":"U7okhSHxC8Vs1c3YXxQleRiiIYelvmdL",
"org_level":"4",
"area_name":"文楼村"
}
复制代码
]node
[
{
"org_key":"2001",
"up_org_key":"0",
"usr_org_key":"1001",
"usr_org_name":"光明城",
"user_org_code":"10",
"boss_id":"10010",
"org_name":"光明城1",
"org_code":"12",
"area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw",
"org_level":"1",
"area_name":"虎邱村",
"child_level":1,
"child":[
{
"org_key":"2002",
"up_org_key":"2001",
"usr_org_key":"1002",
"usr_org_name":"晋安区",
"user_org_code":"10-0001",
"boss_id":"10010",
"org_name":"晋安区",
"org_code":"12-1",
"area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw",
"org_level":"2",
"area_name":"虎邱村",
"child_level":2,
"child":[
]
},
{
"org_key":"org_fTZXL9Vea8mLlxVCeGEWbFr4cQHQDQhZ",
"up_org_key":"2001",
"usr_org_key":"org_iU57sIDvHmM6LljFPSZbgNVieVhjKyBQ",
"usr_org_name":"福州测试小区",
"user_org_code":"10-0003",
"boss_id":"10010",
"org_name":"福州测试小区",
"org_code":"12-2",
"area_key":"U7okhSHxC8Vs1c3YXxQleRiiIYelvmdL",
"org_level":"2",
"area_name":"文楼村",
"child_level":2,
"child":[
]
},
{
"org_key":"org_7I7UNQloRMuZBC6RQlp6gZf9KDgiI3hm",
"up_org_key":"2001",
"usr_org_key":"",
"usr_org_name":"",
"user_org_code":"",
"boss_id":"10010",
"org_name":"花园小区",
"org_code":"12-5",
"area_key":"IfwmlJrHl6137YZ7FvmcW1QjlNYoGWkS",
"org_level":"2",
"area_name":"福耀社区",
"child_level":2,
"child":[
{
"org_key":"org_IXGMspHF6FZFrhZEWJGQpijR1hH0aQ1C",
"up_org_key":"org_7I7UNQloRMuZBC6RQlp6gZf9KDgiI3hm",
"usr_org_key":"org_EdLEdVgGciifkYeRmluNawW6Tjgxq4Fu",
"usr_org_name":"西洪小区",
"user_org_code":"0021",
"boss_id":"10010",
"org_name":"区委会",
"org_code":"12-5-1",
"area_key":"pMhxXlafOcYeQ0vNWf3nz1tIdwvS0JdN",
"org_level":"3",
"area_name":"玉峰村",
"child_level":3,
"child":[
{
"org_key":"org_hCtV75g3cB6bBqJHarfRvKwG1YjEKwwX",
"up_org_key":"org_IXGMspHF6FZFrhZEWJGQpijR1hH0aQ1C",
"usr_org_key":"",
"usr_org_name":"",
"user_org_code":"",
"boss_id":"10010",
"org_name":"某某部门",
"org_code":"12-5-1-1",
"area_key":"U7okhSHxC8Vs1c3YXxQleRiiIYelvmdL",
"org_level":"4",
"area_name":"文楼村",
"child_level":4,
"child":[
]
}
]
}
]
}
]
},
{
"org_key":"2003",
"up_org_key":"0",
"usr_org_key":"",
"usr_org_name":"",
"user_org_code":"",
"boss_id":"10010",
"org_name":"鼓楼区",
"org_code":"11",
"area_key":"qBkXGHYS6H2r3l8hQsOWOC8C12kMeEHw",
"org_level":"1",
"area_name":"虎邱村",
"child_level":1,
"child":[
{
"org_key":"org_fx5fjorqBRWJgWR4CxMx3Wquq0CimhnE",
"up_org_key":"2003",
"usr_org_key":"org_HHsupVt4HPzfcpSZShchbLivotsVdaFK",
"usr_org_name":"大儒世家",
"user_org_code":"003",
"boss_id":"10010",
"org_name":"五凤街道",
"org_code":"11-1",
"area_key":"DxeRGfT5mP2tq1Yw4b7hqzDckZiL2T9W",
"org_level":"2",
"area_name":"福和社区",
"child_level":2,
"child":[
]
}
]
}
复制代码
]测试