Sin descripción
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. using Newtonsoft.Json.Linq;
  2. using System.Windows.Forms;
  3. using System.Collections.Generic;
  4. //namespace LrGetToken
  5. //{
  6. // public class NodeAdder
  7. // {
  8. // // 用于存储列名顺序
  9. // public List<string> nodeNames = new List<string>();
  10. // public void AddNode(JToken token, TreeNodeCollection nodes)
  11. // {
  12. // // 存储正常的节点
  13. // List<TreeNode> normalNodes = new List<TreeNode>();
  14. // // 存储值为0或null的节点
  15. // List<TreeNode> specialNodes = new List<TreeNode>();
  16. // foreach (JProperty property in token.Children<JProperty>())
  17. // {
  18. // // 创建新的节点
  19. // TreeNode node = new TreeNode(property.Name);
  20. // // 确保节点名称不重复
  21. // if (!nodes.ContainsKey(node.Text))
  22. // {
  23. // // 添加节点
  24. // TreeNode valueNode = node.Nodes.Add("Value: " + property.Value.ToString());
  25. // // 判断值是否为0或null
  26. // if (property.Value.Type == JTokenType.Null || property.Value.ToString() == "0")
  27. // {
  28. // specialNodes.Add(node);
  29. // }
  30. // else
  31. // {
  32. // normalNodes.Add(node);
  33. // }
  34. // // 将节点名称添加到顺序列表
  35. // nodeNames.Add(node.Text);
  36. // // 递归处理嵌套的子节点
  37. // AddNode(property.Value, node.Nodes);
  38. // }
  39. // }
  40. // // 先添加正常的节点
  41. // foreach (TreeNode normalNode in normalNodes)
  42. // {
  43. // nodes.Add(normalNode);
  44. // }
  45. // // 最后添加值为0或null的节点
  46. // foreach (TreeNode specialNode in specialNodes)
  47. // {
  48. // nodes.Add(specialNode);
  49. // }
  50. // }
  51. // }
  52. //}
  53. namespace LrGetToken
  54. {
  55. public class NodeAdder
  56. {
  57. public void AddNode(JToken token, TreeNodeCollection nodes)
  58. {
  59. // 存储正常的节点
  60. List<TreeNode> normalNodes = new List<TreeNode>();
  61. // 存储值为0或null的节点
  62. List<TreeNode> specialNodes = new List<TreeNode>();
  63. foreach (JProperty property in token.Children<JProperty>())
  64. {
  65. // 创建新的节点
  66. TreeNode node = new TreeNode(property.Name);
  67. // 确保节点名称不重复
  68. if (!nodes.ContainsKey(node.Text))
  69. {
  70. TreeNode valueNode = node.Nodes.Add("Value: " + property.Value.ToString());
  71. // 判断值是否为0或null
  72. if (property.Value.Type == JTokenType.Null || property.Value.ToString() == "0")
  73. {
  74. // 如果是0或null,将节点添加到 specialNodes
  75. specialNodes.Add(node);
  76. }
  77. else
  78. {
  79. // 否则添加到 normalNodes
  80. normalNodes.Add(node);
  81. }
  82. // 递归处理嵌套的子节点
  83. AddNode(property.Value, node.Nodes);
  84. }
  85. }
  86. // 先添加正常的节点
  87. foreach (TreeNode normalNode in normalNodes)
  88. {
  89. nodes.Add(normalNode);
  90. }
  91. // 最后添加值为0或null的节点
  92. foreach (TreeNode specialNode in specialNodes)
  93. {
  94. nodes.Add(specialNode);
  95. }
  96. }
  97. }
  98. }