我正在构建一个从外部源获取运行时JSON消息的应用程序。
我对消息文本的结构一无所知。
我想获取此JSON文本,将其呈现到树视图(或等效的UI),在我刚刚动态创建的树视图中编辑此JSON,然后将文本发送回源。
我真的不知道从哪里开始。有什么建议吗?
private void btn_Convert_MouseClick(object sender, MouseEventArgs e)
{
try
{
string json = rbt_display.Text;
JObject obj = JObject.Parse(json);
tvw_display.Nodes.Clear();
TreeNode parent = Json2Tree(obj);
parent.Text = "Root Object";
tvw_display.Nodes.Add(parent);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ERROR");
}
}
private TreeNode Json2Tree(JObject obj)
{
//create the parent node
TreeNode parent = new TreeNode();
//loop through the obj. all token should be pair<key, value>
foreach (var token in obj)
{
//change the display Content of the parent
parent.Text = token.Key.ToString();
//create the child node
TreeNode child = new TreeNode();
child.Text = token.Key.ToString();
//check if the value is of type obj recall the method
if (token.Value.Type.ToString() == "Object")
{
// child.Text = token.Key.ToString();
//create a new JObject using the the Token.value
JObject o = (JObject)token.Value;
//recall the method
child = Json2Tree(o);
//add the child to the parentNode
parent.Nodes.Add(child);
}
//if type is of array
else if (token.Value.Type.ToString() == "Array")
{
int ix = -1;
// child.Text = token.Key.ToString();
//loop though the array
foreach (var itm in token.Value)
{
//check if value is an Array of objects
if (itm.Type.ToString() == "Object")
{
TreeNode objTN = new TreeNode();
//child.Text = token.Key.ToString();
//call back the method
ix++;
JObject o = (JObject)itm;
objTN = Json2Tree(o);
objTN.Text = token.Key.ToString() + "[" + ix + "]";
child.Nodes.Add(objTN);
//parent.Nodes.Add(child);
}
//regular array string, int, etc
else if(itm.Type.ToString() == "Array")
{
ix++;
TreeNode dataArray = new TreeNode();
foreach (var data in itm)
{
dataArray.Text = token.Key.ToString() + "[" + ix + "]";
dataArray.Nodes.Add(data.ToString());
}
child.Nodes.Add(dataArray);
}
else
{
child.Nodes.Add(itm.ToString());
}
}
parent.Nodes.Add(child);
}
else
{
//if token.Value is not nested
// child.Text = token.Key.ToString();
//change the value into N/A if value == null or an empty string
if (token.Value.ToString() == "")
child.Nodes.Add("N/A");
else
child.Nodes.Add(token.Value.ToString());
parent.Nodes.Add(child);
}
}
return parent;
}
sample json
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"height_cm": 167.6,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
}
],
"children": [],
"spouse": null
}
注意:此示例使用NewtonSoft Json。右键单击解决方案,然后单击管理NuGet软件包以安装参考。
我用编码,使用4.8.1作为我的编译器。目标是使用节点的键(没有值--将其视为项目)计算从Trees根节点开始的每个路径的乘积总和。Tree的高度和初始根键由用户(输入)决定,其中是树的高度,是根节点的键。 要动态创建树,规则如下: 树的根节点是 如果父节点是,则子节点将是(左子节点)、(右子节点) 如果父节点是,则子节点将是(左子节点)和(右子节点) 如果父节点是,则子节点将是(左子节点)和(右
问题内容: 我在使用primefaces树实现实现动态树结构时遇到了一些麻烦。在primeface提供的展示柜中,代码的结构如下所示。但是,这是非常静态的。我试图弄清楚如何处理从数据库中获取的数据,在编译时树的深度是未知的。 我以为我可能需要某种递归方法来实现此目的,但我无法完全理解实现的样子。 有什么想法吗? 以下是primefaces的示例代码 问题答案:
我知道如何在MVC中创建视图。
我希望在ajaxsuccess中动态创建div元素,每个div元素的id都是响应数据中的“id”!有办法吗?谁能帮帮我吗!到目前为止,我还附上了一支在我作品下方剪下的密码笔。 https://codepen.io/anon/pen/JxXvbb?editors=1111#anon-登录
使用此页可了解 After Effects 中的基本图形面板以及如何使用动态图形模板和主属性。 注意: Typekit 现已更名为 Adobe Fonts,包含在 Creative Cloud 和其他订阅中。了解详情。 基本图形面板可让您为动态图形创建自定义控件,并通过 Creative Cloud Libraries 将它们共享为动态图形模板或本地文件。基本图形面板就像一个容器,可在其中添加、
问题内容: 我有一个类别表,如下所示。我要保存类别,该表中的子类别(多个子类别)。我的桌子看起来像 现在,我需要查询该表并按如下所示创建树形结构,以轻松浏览前端的类别。 像这样的树 我对查询有点困惑。谁能帮帮我吗 ? 提前致谢 问题答案: 对于基本显示,您可以使用: 它将为您提供所有的根节点。 当用户单击某个节点时,他/她/它向服务器(可能是Ajax)提交请求以获取被单击节点的子节点,例如: 然后