数据结构,树解析

树结构

{
    "connects": [
        {
            "label": "",
            "pageSourceId": "nodeBegin",
            "pageTargetId": "1584412572408",
            "target": {
                "blockId": "1584412572408",
                "blockX": 368,
                "blockY": 137,
                "connects": [
                    {
                        "label": "1000",
                        "pageSourceId": "1584412572408",
                        "pageTargetId": "1584412576172",
                        "target": {
                            "blockId": "1584412576172",
                            "blockX": 214,
                            "blockY": 154,
                            "connects": [],
                            "dealerId": "203",
                            "dealerName": "集团翼支付",
                            "isRoot": false,
                            "use": true
                        }
                    },
                    {
                        "label": "1000",
                        "pageSourceId": "1584412572408",
                        "pageTargetId": "1584412578216",
                        "target": {
                            "blockId": "1584412578216",
                            "blockX": 174,
                            "blockY": 291,
                            "connects": [],
                            "dealerId": "201",
                            "dealerName": "集团电子渠道",
                            "isRoot": false,
                            "use": true
                        }
                    },
					{
                        "label": "1000",
                        "pageSourceId": "1584412572408",
                        "pageTargetId": "1584412578216",
                        "target": {
                            "blockId": "1584412578216",
                            "blockX": 174,
                            "blockY": 291,
                            "connects": [],
                            "dealerId": "12",
                            "dealerName": "集团电子渠道",
                            "isRoot": false,
                            "use": true
                        }
                    }
                ],
                "dealerId": "204",
                "dealerName": "物联网自服务平台",
                "isRoot": false,
                "use": true
            }
        },
		{
            "label": "",
            "pageSourceId": "nodeBegin",
            "pageTargetId": "1584412572408",
            "target": {
                "blockId": "1584412572408",
                "blockX": 368,
                "blockY": 137,
                "connects": [
                    {
                        "label": "1000",
                        "pageSourceId": "1584412572408",
                        "pageTargetId": "1584412576172",
                        "target": {
                            "blockId": "1584412576172",
                            "blockX": 214,
                            "blockY": 154,
                            "connects": [],
                            "dealerId": "203",
                            "dealerName": "集团翼支付",
                            "isRoot": false,
                            "use": true
                        }
                    },
                    {
                        "label": "1000",
                        "pageSourceId": "1584412572408",
                        "pageTargetId": "1584412578216",
                        "target": {
                            "blockId": "1584412578216",
                            "blockX": 174,
                            "blockY": 291,
                            "connects": [],
                            "dealerId": "201",
                            "dealerName": "集团电子渠道",
                            "isRoot": false,
                            "use": true
                        }
                    }
                ],
                "dealerId": "204",
                "dealerName": "物联网自服务平台",
                "isRoot": false,
                "use": true
            }
        }
    ],
    "isRoot": true
}

定义树结构代码

package com.sitech.crmpd.domain;

import lombok.Data;
import org.apache.commons.collections.CollectionUtils;

import java.util.List;

/**
 * @oauth: qiangSW
 * @date: 2020/3/19 11:27
 * @description: com.sitech.crmpd.domain
 * @doc:
 */
@Data
public class Ruletree {

    public boolean isRoot;

    public List connects;

    /**
     * 解析树
     *
     * @param connects 树
     * @param channels 解析树后放入的值
     */
    public void resolverTree(List connects, List channels) {
        if (CollectionUtils.isNotEmpty(connects)) {
            connects.stream().forEach(each -> {
                if ("nodeBegin".equals(each.getPageSourceId())) {
                    resolverTree(each.getTarget().getConnects(), channels);
                    return;
                }
                Long dealerId = Long.valueOf(each.getTarget().getDealerId());
                channels.add(dealerId);
                if (CollectionUtils.isNotEmpty(each.getTarget().getConnects())) {
                    resolverTree(each.getTarget().getConnects(), channels);
                }
            });
        }
    }
}

@Data
class Connect {
    public Target target;
    public String label;
    public String pageSourceId;
}

@Data
class Target {
    public String blockId;
    public String blockX;
    public String blockY;
    public List connects;
    public String dealerId;
    public String dealerName;
    public String use;
    public boolean isRoot;
}

测试结果

public static void main(String[] args) {
        String str = "{\n" +
                "    \"connects\": [\n" +
                "        {\n" +
                "            \"label\": \"\",\n" +
                "            \"pageSourceId\": \"nodeBegin\",\n" +
                "            \"pageTargetId\": \"1584412572408\",\n" +
                "            \"target\": {\n" +
                "                \"blockId\": \"1584412572408\",\n" +
                "                \"blockX\": 368,\n" +
                "                \"blockY\": 137,\n" +
                "                \"connects\": [\n" +
                "                    {\n" +
                "                        \"label\": \"1000\",\n" +
                "                        \"pageSourceId\": \"1584412572408\",\n" +
                "                        \"pageTargetId\": \"1584412576172\",\n" +
                "                        \"target\": {\n" +
                "                            \"blockId\": \"1584412576172\",\n" +
                "                            \"blockX\": 214,\n" +
                "                            \"blockY\": 154,\n" +
                "                            \"connects\": [],\n" +
                "                            \"dealerId\": \"203\",\n" +
                "                            \"dealerName\": \"集团翼支付\",\n" +
                "                            \"isRoot\": false,\n" +
                "                            \"use\": true\n" +
                "                        }\n" +
                "                    },\n" +
                "                    {\n" +
                "                        \"label\": \"1000\",\n" +
                "                        \"pageSourceId\": \"1584412572408\",\n" +
                "                        \"pageTargetId\": \"1584412578216\",\n" +
                "                        \"target\": {\n" +
                "                            \"blockId\": \"1584412578216\",\n" +
                "                            \"blockX\": 174,\n" +
                "                            \"blockY\": 291,\n" +
                "                            \"connects\": [],\n" +
                "                            \"dealerId\": \"201\",\n" +
                "                            \"dealerName\": \"集团电子渠道\",\n" +
                "                            \"isRoot\": false,\n" +
                "                            \"use\": true\n" +
                "                        }\n" +
                "                    },\n" +
                "\t\t\t\t\t{\n" +
                "                        \"label\": \"1000\",\n" +
                "                        \"pageSourceId\": \"1584412572408\",\n" +
                "                        \"pageTargetId\": \"1584412578216\",\n" +
                "                        \"target\": {\n" +
                "                            \"blockId\": \"1584412578216\",\n" +
                "                            \"blockX\": 174,\n" +
                "                            \"blockY\": 291,\n" +
                "                            \"connects\": [],\n" +
                "                            \"dealerId\": \"12\",\n" +
                "                            \"dealerName\": \"集团电子渠道\",\n" +
                "                            \"isRoot\": false,\n" +
                "                            \"use\": true\n" +
                "                        }\n" +
                "                    }\n" +
                "                ],\n" +
                "                \"dealerId\": \"204\",\n" +
                "                \"dealerName\": \"物联网自服务平台\",\n" +
                "                \"isRoot\": false,\n" +
                "                \"use\": true\n" +
                "            }\n" +
                "        },\n" +
                "\t\t{\n" +
                "            \"label\": \"\",\n" +
                "            \"pageSourceId\": \"nodeBegin\",\n" +
                "            \"pageTargetId\": \"1584412572408\",\n" +
                "            \"target\": {\n" +
                "                \"blockId\": \"1584412572408\",\n" +
                "                \"blockX\": 368,\n" +
                "                \"blockY\": 137,\n" +
                "                \"connects\": [\n" +
                "                    {\n" +
                "                        \"label\": \"1000\",\n" +
                "                        \"pageSourceId\": \"1584412572408\",\n" +
                "                        \"pageTargetId\": \"1584412576172\",\n" +
                "                        \"target\": {\n" +
                "                            \"blockId\": \"1584412576172\",\n" +
                "                            \"blockX\": 214,\n" +
                "                            \"blockY\": 154,\n" +
                "                            \"connects\": [],\n" +
                "                            \"dealerId\": \"203\",\n" +
                "                            \"dealerName\": \"集团翼支付\",\n" +
                "                            \"isRoot\": false,\n" +
                "                            \"use\": true\n" +
                "                        }\n" +
                "                    },\n" +
                "                    {\n" +
                "                        \"label\": \"1000\",\n" +
                "                        \"pageSourceId\": \"1584412572408\",\n" +
                "                        \"pageTargetId\": \"1584412578216\",\n" +
                "                        \"target\": {\n" +
                "                            \"blockId\": \"1584412578216\",\n" +
                "                            \"blockX\": 174,\n" +
                "                            \"blockY\": 291,\n" +
                "                            \"connects\": [],\n" +
                "                            \"dealerId\": \"201\",\n" +
                "                            \"dealerName\": \"集团电子渠道\",\n" +
                "                            \"isRoot\": false,\n" +
                "                            \"use\": true\n" +
                "                        }\n" +
                "                    }\n" +
                "                ],\n" +
                "                \"dealerId\": \"204\",\n" +
                "                \"dealerName\": \"物联网自服务平台\",\n" +
                "                \"isRoot\": false,\n" +
                "                \"use\": true\n" +
                "            }\n" +
                "        }\n" +
                "    ],\n" +
                "    \"isRoot\": true\n" +
                "}";
        Ruletree ruletree = JSONObject.parseObject(str, Ruletree.class);
        List channels = Lists.newArrayList();
        ruletree.resolverTree(ruletree.getConnects(), channels);
        System.out.println("解析树:"+channels);

    }

输出结果

解析树:[203, 201, 12, 203, 201]

你可能感兴趣的:(java,数据结构)