我正在使用Macross.Json.Extensions并且有一種方法可以接受Interval interval. 當我序列化它時,我希望得到它15,而不是\"15\". 在這種情況下,序列化使用雙引號,基本上輸出的asd是 is \"15\",而不是 juts 15。我如何解決它?
public void Test(Interval interval)
{
var asd = JsonSerializer.Serialize(interval, new JsonSerializerOptions
{
NumberHandling = JsonNumberHandling.AllowReadingFromString
}); // Equals to: \"15\". Expected: 15
var intervalMinutes = int.Parse(interval.ToString());
}
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
public enum Interval
{
[EnumMember(Value = "1")]
OneMinute,
[EnumMember(Value = "5")]
FiveMinute,
[EnumMember(Value = "15")]
FifteenMinute,
[EnumMember(Value = "30")]
ThirtyMinute,
[EnumMember(Value = "60")]
OneHour,
[EnumMember(Value = "240")]
FourHour,
[EnumMember(Value = "1440")]
OneDay,
[EnumMember(Value = "10080")]
OneWeek,
[EnumMember(Value = "21600")]
FifteenDays
}
uj5u.com熱心網友回復:
EnumMemberAttribute退出將可列舉值序列化為它們的符號 - 識別符號 - 名稱,而不是運行時使用的實際數值。
在這種情況下,傳遞給屬性的值是分鐘計數,而不是將其用作列舉值的值(這很奇怪:序列化一個可能通過引入另一個值而改變的值,例如。TwentyMinutes)。
EnumMemberAttribute不直接使用和設定每個成員會更好:
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
public enum Interval
{
OneMinute = 1,
FiveMinute = 5,
FifteenMinute = 15,
ThirtyMinute = 30,
OneHour = 60,
FourHour = 240,
OneDay = 1440,
OneWeek = 10080,
FifteenDays = 21600
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/497241.html
標籤:C# json 。网 system.text.json
