zoukankan      html  css  js  c++  java
  • C#根据数据生成力引导图

    效果:

        public class Rootobject
        {
            public Node[] nodes { get; set; }
            public Link[] links { get; set; }
            public Category[] categories { get; set; }
        }
    
        /// <summary>
        /// 节点
        /// </summary>
        public class Node
        {
            public string id { get; set; }
            public string name { get; set; }
            public float symbolSize { get; set; }
    
            public float value { get; set; }
            public int category { get; set; }
        }
    
        /// <summary>
        /// 关联
        /// </summary>
        public class Link
        {
            public string source { get; set; }
            public string target { get; set; }
        }
    
        /// <summary>
        /// 分类
        /// </summary>
        public class Category
        {
            public string name { get; set; }
        }

    生成Json数据代码

            List<Category> categories = new List<Category>();
            List<Node> nodes = new List<Node>();
            List<Link> links = new List<Link>();
            Rootobject rootobject = new Rootobject();
    
    
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                categories.Clear();
                nodes.Clear();
                links.Clear();
    
                string[] lines = textBox1.Lines;
                #region 分类
                for (int i = 0; i < lines.Length; i++)
                {
                    string[] valueNum = lines[i].Split('#');
                    string cateGory = valueNum.LastOrDefault();
                    if (string.IsNullOrEmpty(cateGory))
                    {
                        continue;
                    }
                    if (!categories.Any(o => o.name == cateGory))
                    {
                        categories.Add(new Category() { name = cateGory });
                    }
    
                }
    
                #endregion
    
                #region  节点
                for (int i = 0; i < lines.Length; i++)
                {
                    string[] valueNum = lines[i].Split('#');
                    var newGroup = valueNum.Reverse().ToArray();
                    for (int x = 1; x < newGroup.Length; x++)
                    {
                        string cateGory = newGroup[0];
                        var categoryid = categories.FirstOrDefault(o => o.name == cateGory);
                        int maxNode = 0;
                        if (nodes.Any())
                        {
                            maxNode=nodes.Max(p => Convert.ToInt32(p.id));
                            maxNode++;
                        }
                      
                        Node node = nodes.FirstOrDefault(o => o.name == newGroup[x]);
                        if (node == null)
                        {
                            node = new Node()
                            {
                                id = maxNode.ToString(),
                                name = newGroup[x],
                                category = categories.IndexOf(categoryid),
                                symbolSize = 20,
                                value = 2
                            };
                            nodes.Add(node);
                        }
                       
                        if (x == 1)
                        {
                            continue;
                        }
                        else
                        {
    
                            var parentNode = nodes.FirstOrDefault(o => o.name == newGroup[x - 1]);
    
                            links.Add(new Link()
                            {
                                source = node.id,
                                target = parentNode.id
                            });
                        }
    
                    }
                }
                #endregion
    
                rootobject.categories = categories.ToArray();
                rootobject.nodes = nodes.ToArray();
                rootobject.links = links.ToArray();
    
     
                string json = JsonConvert.SerializeObject(rootobject);
                textBox2.Text = "";
                textBox2.AppendText(json);
            }

  • 相关阅读:
    webstorm和git安装后,terminal输入git命令,提示'git' 不是内部或外部命令
    Vue中beforeRouterEnter和beforeRouteLeave的应用
    对象数组,对比多个数组的相同子元素并筛选
    应用canvas绘制动态时钟--每秒自动动态更新时间
    opacity 与rgba区别
    js对象的合并
    小程序wx.navigateTo和wx.redirectTo 都无效
    点赞博客园
    英语学习方法
    JAVA编程思想——分析阅读
  • 原文地址:https://www.cnblogs.com/w2011/p/14862112.html
Copyright © 2011-2022 走看看