我有一個 json 字串。
json 字串中有多個子類別,具體取決于類別。我想把它們全部結合起來。它應該始終提供更高級別的最后一個子級別的 ID。
樣本 :
Id - Name
-- ----------
1239 - Accessory> Jewelery > wristband> Silver wristband
誰能幫我 。謝謝
{
"categories": [
{
"id": 368,
**"name": "Accessory ",**
"parentId": null,
"subCategories": [
{
"id": 396,
**"name": "Jewelery ",**
"parentId": 368,
"subCategories": [
{
"id": 397,
**"name": "wristband",**
"parentId": 396,
"subCategories": [
{
"id": 1238,
"name": "Gold wristband",
"parentId": 397,
"subCategories": []
},
{
**"id": 1239,**
"name": "Silver wristband",
"parentId": 397,
"subCategories": []
},
{
"id": 2845,
"name": "Steel wristband",
"parentId": 397,
"subCategories": []
},
{
"id": 3171,
"name": "Pearl wristband",
"parentId": 397,
"subCategories": []
},
{
"id": 3883,
"name": "diamond wristband",
"parentId": 397,
"subCategories": []
}
]
}
]
}
]
}
]
}
這是我的課
public class SubCategory
{
public int id { get; set; }
public string name { get; set; }
public int parentId { get; set; }
public List<object> subCategories { get; set; }
}
public class Category
{
public int id { get; set; }
public string name { get; set; }
public object parentId { get; set; }
public List<SubCategory> subCategories { get; set; }
}
public class Root
{
public List<Category> categories { get; set; }
}
uj5u.com熱心網友回復:
我認為您可以洗掉 SubCategory,那List<object>在那里做什么?
假設你可以反序列化
public class Category
{
public int id { get; set; }
public string name { get; set; }
public int? parentId { get; set; } // int?
public List<Category> subCategories { get; set; } // <Category>
}
public class Root
{
public List<Category> categories { get; set; }
}
那么你可以使用一個簡單的深度優先遞回訪問者:
string FindCategoryTrail(List<Category> categories, int id)
{
foreach(var category in categories)
{
if (category.id == id) return category.name;
var trail = FindCategoryTrail(category.subCategories , id);
if (trail != null)
{
return category.name " > " trail;
}
}
return null;
}
并稱之為
string trail = FindCategoryTrail(myRoot.categories, 1239);
uj5u.com熱心網友回復:
使用 Linq,您可以展平嵌套串列:
public class Category
{
public int id { get; set; }
public string name { get; set; }
public object parentId { get; set; }
public List<Category> subCategories { get; set; }
}
public class Root
{
public List<Category> categories { get; set; }
}
IEnumerable<Category> Flatten(IEnumerable<Category> e) => e.SelectMany(c => Flatten(c.subCategories)).Concat(e);
Root root = JsonConvert.DeserializeObject<Root>(File.ReadAllText(@"U:\test1.json"));
var search = Flatten(root.categories).Where(c => c.id == 1239);
foreach(var s in search)
{
System.Diagnostics.Debug.WriteLine($"id: {s.id}");
System.Diagnostics.Debug.WriteLine($"name: {s.name}");
System.Diagnostics.Debug.WriteLine($"parentid: {s.parentId}");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/371689.html
上一篇:資料模板中的用戶控制元件未顯示
