![](/img/trans.png)
[英]How to Format the nested string json property serialized json in C#
[英]How to format a json string as tree format in c#
我有來自Mongo數據庫的數據列表。 內容為JSON格式。 它是一個對象數組,值彼此之間具有父級關系。父級為null(“”)的對象表示它是根節點。
[
{
"_id":"5c04fc163838b0772dd9636d",
"Company":"TESTCOMPANY",
"id":"test_uk",
"parent":""
},
{
"_id":"5c05181f0ab89a44a969015d",
"Company":"TESTCOMPANY",
"id":"Gateway",
"parent":"test_uk"
},
{
"_id":"5c0518723838b0772dd9678e",
"Company":"TESTCOMPANY",
"id":"Device1",
"parent":"Gateway"
},
{
"_id":"5c0518723838b077789636e",
"Company":"TESTCOMPANY",
"id":"Device2",
"parent":"Gateway"
},
{
"_id":"5c0518723838b0772dd9636e34",
"Company":"TESTCOMPANY",
"id":"Adapter",
"parent":"test_uk"
},
{
"_id":"5c0518723838b0772dd9636e",
"Company":"TESTCOMPANY",
"id":"AdapterDevice",
"parent":"Adapter"
},
{
"_id":"5c04fc163838b0772dd93454d",
"Company":"TESTCOMPANY",
"id":"test_us",
"parent":""
},
{
"_id":"5c0518723838b0772dd9636e",
"Company":"TESTCOMPANY",
"id":"Device",
"parent":"test_us"
}
]
是否可以在c#中轉換為父子格式?
預期格式
[
{
"_id":"5c04fc163838b0772dd9636d",
"Company":"TESTCOMPANY",
"id":"test_uk",
"children":[
{
"_id":"5c05181f0ab89a44a969015d",
"Company":"TESTCOMPANY",
"id":"Gateway",
"children":[
{
"_id":"5c0518723838b0772dd9678e",
"Company":"TESTCOMPANY",
"id":"Device1"
},
{
"_id":"5c0518723838b077789636e",
"Company":"TESTCOMPANY",
"id":"Device2"
}
]
},
{
"_id":"5c0518723838b0772dd9636e34",
"Company":"TESTCOMPANY",
"id":"Adapter",
"children":[ {
"_id":"5c0518723838b0772dd9636e",
"Company":"TESTCOMPANY",
"id":"AdapterDevice"
}]
}]},
{
"_id":"5c04fc163838b0772dd93454d",
"Company":"TESTCOMPANY",
"id":"test_us",
"children":[{
"_id":"5c0518723838b0772dd9636e",
"Company":"TESTCOMPANY",
"id":"Device",
"parent":"test_us"
}]
}
]
我只想在Web Ui中顯示這種格式的樹strucutre
我不確定它是否足夠快,但是可能是一種解決方案:
using System.Collections.Generic;
using Newtonsoft.Json;
namespace ConsoleApp1
{
class Program
{
public class Item
{
[JsonProperty("_id")]
public string Guid { get; set; }
[JsonProperty(PropertyName = "company")]
public string Company { get; set; }
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }
[JsonProperty(PropertyName = "parent")]
public string Parent { get; set; }
[JsonProperty(PropertyName = "children")]
public List<Item> Children { get; set; }
}
private static string jsonString = "[{\"_id\":\"5c04fc163838b0772dd9636d\",\"Company\":\"TESTCOMPANY\",\"id\":\"test_uk\",\"parent\":\"\"},{\"_id\":\"5c05181f0ab89a44a969015d\",\"Company\":\"TESTCOMPANY\",\"id\":\"Gateway\",\"parent\":\"test_uk\"},{\"_id\":\"5c0518723838b0772dd9678e\",\"Company\":\"TESTCOMPANY\",\"id\":\"Device1\",\"parent\":\"Gateway\"},{\"_id\":\"5c0518723838b077789636e\",\"Company\":\"TESTCOMPANY\",\"id\":\"Device2\",\"parent\":\"Gateway\"},{\"_id\":\"5c0518723838b0772dd9636e34\",\"Company\":\"TESTCOMPANY\",\"id\":\"Adapter\",\"parent\":\"test_uk\"},{\"_id\":\"5c0518723838b0772dd9636e\",\"Company\":\"TESTCOMPANY\",\"id\":\"AdapterDevice\",\"parent\":\"Adapter\"},{\"_id\":\"5c04fc163838b0772dd93454d\",\"Company\":\"TESTCOMPANY\",\"id\":\"test_us\",\"parent\":\"\"},{\"_id\":\"5c0518723838b0772dd9636e\",\"Company\":\"TESTCOMPANY\",\"id\":\"Device\",\"parent\":\"test_us\"}]";
static void Main(string[] args)
{
var items = JsonConvert.DeserializeObject<List<Item>>(jsonString);
var dictionary = new Dictionary<string, Item>();
foreach (var item in items)
{
if (!dictionary.ContainsKey(item.Parent))
{
dictionary.Add(item.Id, item);
}
else
{
if (dictionary[item.Parent].Children == null)
dictionary[item.Parent].Children = new List<Item>();
dictionary[item.Parent].Children.Add(item);
}
}
string json = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
System.Console.WriteLine(json);
System.Console.ReadLine();
}
}
}
我剛剛制作了一個使用Newtonsoft.Json庫的簡單控制台應用程序。 我認為它是最經常用於這種目的的。
您必須自己找到如何刪除結果中的父屬性,但是我想這應該沒什么大不了的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.