[英]How to convert Enum to Json object with Header in C#
這是我到目前為止所做的
public enum TCountryNames
{
[Display(Name="America")]
cnUSA = 1,
[Display(Name="England")]
cnUK,
[Display(Name="CHINA")]
cnCHN
}
public class MyClass
{
public static List<KeyValuePair<string, int>> GetEnumList()
{
var list = new List<KeyValuePair<string, int>>();
foreach (var e in Enum.GetValues(typeof(TCountryNames)))
{
list.Add(new KeyValuePair<string, int>(e.ToString(), (int)e));
}
return list;
}
}
結果:[cnUSA,1] 總計數為 3,沒有 header
我想要的結果是 [{"Id":1,"Name":"America"},{"Id":2,"Name":"England"}]
我試過 [JsonConverter(typeof(StringEnumConverter))] public TCountryNames Names{ get; 放; }
我也試過將枚舉轉換為數組列表 var names = Enum.GetValues(typeof(TCountryNames)); ArrayList arrLst = new ArrayList() { 名稱 }; 但他們兩個似乎都沒有工作。
*任何幫助將不勝感激。 先感謝您。 *
如果你不想添加新的 class
public static List<Dictionary<string, object>> GetEnumList() { var list = new List<Dictionary<string, object>>(); foreach (var e in Enum.GetValues(typeof(TCountryNames))) { list.Add(new Dictionary<string, object> { { "Id", (int)e }, { "Name", e.ToString() } }); } return list; }
定義一個model用於序列化
public class EnumData { public int Id { get; set; } public string Name { get; set; } } public static List<EnumData> GetEnumList() { var list = new List<EnumData>(); foreach (var e in Enum.GetValues(typeof(TCountryNames))) { list.Add(new EnumData { Id = (int)e, Name = e.ToString() }); } return list; }
要獲取顯示名稱值,您應該使用 System.Reflection。 然后你可以用簡單的方式做到這一點:
public enum TCountryNames
{
[Display(Name = "America")]
cnUSA = 1,
[Display(Name = "England")]
cnUK,
[Display(Name = "CHINA")]
cnCHN
}
public class EnumData
{
public int Id { get; set; }
public string? Name { get; set; }
}
public class MyClass
{
public static List<EnumData> GetEnumList()
{
var list = new List<EnumData>();
foreach (var e in Enum.GetValues(typeof(TCountryNames)))
{
list.Add(new EnumData
{
Id = (int)e,
Name = e.GetType()
.GetMember(e.ToString())
.First()?
.GetCustomAttribute<DisplayAttribute>()?
.GetName()
});
}
return list;
}
}
所以要澄清:
Output: [ { "Id": 1, "Name": "America" }, { "Id": 2, "Name": "England" }, { "Id": 3, "Name": "CHINA" } ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.