我们的结果集以包含父项、子项和其他一些列的列表形式返回。我们希望将其转换为 Json,其中父节点转换为 Id,子节点转换为对应节点。 请参阅下面的示例
返回结果:
父| child
ab |光盘
ab |埃夫
ab | GH
光盘| ij
光盘|吉隆坡
EF |锰
EF |操作
gh | qr
ij |英石
等等
预期 Json:
{
“id”:“ab”,
“标签”:“ab”,
“节点”:[
{
“id”:“光盘”,
“标签”:“CD”,
“节点”:[
{
“id”:“ij”,
“标签”:“ij”,
“节点”:{
“id”:“st”,
“标签”:“st”
}
},
{
“id”:“kl”,
“标签”:“KL”
}
]
},
{
“id”:“ef”,
“标签”:“ef”,
“节点”:[
{
“id”:“mn”,
“标签”:“mn”
},
{
“id”:“操作”,
“标签”:“操作”
}
]
},
{
“id”:“gh”,
“标签”:“gh”,
“节点”:{
“id”:“qr”,
“标签”:“qr”
}
}
]
}
希望问题很清楚,请告诉我可以帮助我完成此操作的 C# 或 js 实用程序。
提前致谢
已编辑
经过一番研究,
public class TreeNode
{
public TreeNode()
{
nodes = List<TreeNode>();
}
String id {get; set;}
List<TreeNode> nodes {get; set;}
}
方法
public List<TreeNode> FlatToHierarchy(List<TreeNode> list)
{
var lookup = new Dictionary<string, TreeNode>();
// actual nested collection to return
List<TreeNode> nested = new List<TreeNode>();
foreach (TreeNode item in list)
{
if (lookup.ContainsKey(item.Parent))
{
lookup[item.Parent].Children.Add(item);
}
else
{
nested.Add(item);
}
lookup.Add(item.Part, item);
}
return nested;
}
但是这会返回,
ab
|
--cd
|
--ij
--cd
|
--kl
ab
|
--ef
|
--mn
--ef
|
--op
等等,这不是预期的数据。
更新了问题,以便它可能有助于获取答案。
提前致谢。
最佳答案
请使用 JSON.Net 或其他 json 解析器。
关于javascript - 将 ArrayList 转换为所需的 Json 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40406261/