Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace UIWidgets.Examples
- {
- using System.Collections;
- using UIWidgets;
- using UnityEngine.UI;
- using Newtonsoft.Json.Linq;
- public class JSON
- {
- JObject json;
- public JSON(string source)
- {
- json = JObject.Parse(source);
- }
- public JToken Get(string path)
- {
- return json.SelectToken(path);
- }
- }
- public class TreeViewJSONComponent : TreeViewComponentBase<TreeViewEditJSONItem>
- {
- public override void SetData(TreeNode<TreeViewEditJSONItem> node, int depth)
- {
- Node = node;
- base.SetData(Node, depth);
- if (node == null)
- {
- Text.text = string.Empty;
- return;
- }
- Text.text = Node.Item.Name;
- if (!Node.Item.AddedChildren)
- {
- StartCoroutine(AddChildren(Node));
- }
- }
- static IEnumerator AddChildren(TreeNode<TreeViewEditJSONItem> node)
- {
- yield return null;
- if (node.Nodes == null)
- {
- node.Nodes = new ObservableList<TreeNode<TreeViewEditJSONItem>>();
- }
- node.Nodes.BeginUpdate();
- node.Nodes.Clear();
- var item = node.Item;
- var v = item.JSONValue.Get(item.Path);
- if (v is JObject json)
- {
- foreach (var property in json.Properties())
- {
- var is_complex = property.Value is JArray || property.Value is JObject;
- var name = is_complex
- ? property.Name
- : property.Name + ": " + property.Value;
- var sub_node = new TreeNode<TreeViewEditJSONItem>(new TreeViewEditJSONItem(name, item.JSONValue, property.Path));
- node.Nodes.Add(sub_node);
- }
- }
- else if (v is JArray children)
- {
- for (int i = 0; i < children.Count; i++)
- {
- var sub_node = new TreeNode<TreeViewEditJSONItem>(new TreeViewEditJSONItem(i.ToString(), item.JSONValue, children[i].Path));
- node.Nodes.Add(sub_node);
- }
- }
- node.Item.AddedChildren = true;
- node.Nodes.EndUpdate();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement