-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJson2TreeViewParser.cs
More file actions
60 lines (53 loc) · 1.68 KB
/
Copy pathJson2TreeViewParser.cs
File metadata and controls
60 lines (53 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using Newtonsoft.Json.Linq;
using System.Windows.Controls;
namespace RYCBEditorX.Utils;
public class Json2TreeViewParser
{
public static void LoadJsonIntoTreeView(TreeView treeView, string jsonFilePath)
{
// 读取 JSON 文件
var jsonContent = System.IO.File.ReadAllText(jsonFilePath);
var jsonObject = JToken.Parse(jsonContent);
// 清空现有节点
treeView.Items.Clear();
// 创建根节点并添加到 TreeView
var rootItem = new TreeViewItem { Header = "Root File" };
treeView.Items.Add(rootItem);
// 将 JSON 数据添加到 TreeView
AddNode(rootItem, jsonObject);
}
private static void AddNode(TreeViewItem parentItem, JToken token)
{
if (token.Type == JTokenType.Object)
{
foreach (var property in token.Children<JProperty>())
{
var propertyItem = new TreeViewItem
{
Header = $"{property.Name}",
Tag = property.Value
};
parentItem.Items.Add(propertyItem);
AddNode(propertyItem, property.Value);
}
}
else if (token.Type == JTokenType.Array)
{
var index = 0;
foreach (var item in token.Children())
{
var arrayItem = new TreeViewItem
{
Header = $"Item {index++}",
Tag = item
};
parentItem.Items.Add(arrayItem);
AddNode(arrayItem, item);
}
}
else
{
parentItem.Header = token.ToString();
}
}
}