我有一个如下所示的类,我正在使用 JSON.NET 来序列化/反序列化
public class Car
{
[JsonProperty(Order = 3)]
public int CarId {get; set;}
[JsonProperty(Order = 1)]
public string CarName {get; set;}
[JsonIgnore]
public int CarMfgDate {get; set}
[JsonProperty(Order = 2)]
public int CarCapacity {get; set;}
}
我需要按照上面类中"JsonProperty"属性定义的相同顺序获取所有 Json 可见属性的列表。因此,我希望将"Car"类的列表初始化如下。
List<string> columns = GetOrderedJSONProperties();
Console.WriteLine(columns.Count); //Prints "3"
Console.WriteLine(columns[0]); //Prints "CarName"
Console.WriteLine(columns[1]); //Prints "CarCapacity"
Console.WriteLine(columns[2]); //Prints "CarId"
请帮我编写 GetOrderedJSONProperties() 方法。感谢所有的帮助!
您可以使用 Linqs OrderBy
函数来实现这一点:
var columns = typeof(Car).GetProperties()
.Where(p => p.GetCustomAttribute<JsonIgnoreAttribute>() == null)
.OrderBy(p => p.GetCustomAttribute<JsonPropertyAttribute>()?.Order)
.Select(p => p.Name).ToList();