I have the below JSON content in a file.
[{
"projectCode": "ICSM000003SM_Prj1",
"name": "Story mapping",
"id": "5eeb94710ce4e01aac9ac3e2",
"workRequests": [{
"name": "test issue",
"project": "5eeb94710ce4e01aac9ac3e2",
"id": "5eeb94930ce4e01aac9ac3ef",
"url": "http://example.com/form?collectorid=5eeb94930ce4e01aac9ac3ef&icentid=5e8eff6b99ba793a08461372&projectid=5eeb94710ce4e01aac9ac3e2&source=mail"
},
{
"name": "defect issue collector",
"project": "5eeb94710ce4e01aac9ac3e2",
"id": "5eee564170e0d814d0dd5288",
"url": "http://example.com/form?collectorid=5eee564170e0d814d0dd5288&icentid=5e8eff6b99ba793a08461372&projectid=5eeb94710ce4e01aac9ac3e2&source=mail"
}
]
},
{
"projectCode": "ICSM000001IC100",
"name": "issue collector",
"id": "5e8eff7c99ba793a08461375",
"workRequests": [{
"name": "SE issue collector",
"project": "5e8eff7c99ba793a08461375",
"id": "5e96864599ba7923a488194a",
"url": "http://example.com/form?collectorid=5e96864599ba7923a488194a&icentid=5e8eff6b99ba793a08461372&projectid=5e8eff7c99ba793a08461375&source=mail"
},
{
"name": "test",
"project": "5e8eff7c99ba793a08461375",
"id": "5ee36aef1ad1de3c10fa9aa6",
"url": "http://example.com/form?collectorid=5ee36aef1ad1de3c10fa9aa6&icentid=5e8eff6b99ba793a08461372&projectid=5e8eff7c99ba793a08461375&source=mail"
}
]
},
{
"projectCode": "ICSM000005SM_SP",
"name": "Single project sm",
"id": "5eee566970e0d814d0dd5289",
"workRequests": [{
"name": "feedback collector",
"project": "5eee566970e0d814d0dd5289",
"id": "5eee568c70e0d814d0dd5296",
"url": "http://example.com/form?collectorid=5eee568c70e0d814d0dd5296&icentid=5e8eff6b99ba793a08461372&projectid=5eee566970e0d814d0dd5289&source=mail"
}]
}
]
Note: The above JSON content is dynamic. Its format is the same, but all values might change when I consume a REST API from the application.
Below is my code for converting JSON to treeview, but I want to display it in List or Details format.
public static void AddObjectNodes(JObject @object, string name, TreeNodeCollection parent)
{
var node = new TreeNode(name);
// if ()
parent.Add(node);
foreach (var property in @object.Properties())
{
AddTokenNodes(property.Value, property.Name, node.Nodes);
}
}
private static void AddTokenNodes(JToken token, string name, TreeNodeCollection parent)
{
if (token is JValue)
{
parent.Add(new TreeNode(string.Format("{0}: {1}", name, ((JValue)token).Value)));
}
else if (token is JArray)
{
AddArrayNodes((JArray)token, name, parent);
}
else if (token is JObject)
{
AddObjectNodes((JObject)token, name, parent);
}
}
private static void AddArrayNodes(JArray array, string name, TreeNodeCollection parent)
{
var node = new TreeNode(name);
parent.Add(node);
for (var i = 0; i < array.Count; i++)
{
AddTokenNodes(array[i], string.Format("[{0}]", i), node.Nodes);
}
}
var @object = JObject.Parse(json);
AddObjectNodes(@object, "JSON", treeView.Nodes);
my problem is i am getting output like this
I want the below list format. How do I handle JSON to get this data in C# Windows Forms?
I am using Newtonsoft Json.NET. Is there a way to break it into an arraylist?
---Work requestname ( Story mapping)
---Work requestname ( Story mapping)
---Work requestname ( Issue Collector)
---Work requestname ( Issue Collector)
And so on for a different work request
I am having a hard time generating a class for my JSON content. All online class generators generate a class for each project like I have project1, project2, and so on since my REST API will provide multiple projects and cannot create a class each time on the go.