使用 DataAnnotation 序列化 JSON 以应用小数格式规则
Serialize JSON using DataAnnotation to apply decimal formatting rules
我们有几个具有各种小数(和其他)属性的复杂 classes。在几十个小数属性中,它们都属于 3 个特定的格式规则:
- 前导零,一位小数
- 前导零,两位小数
- 无前导零,小数点后三位
我想用自定义属性修饰各种 DTO 十进制属性,以指定格式化规则,例如 [DecimalFormatRule(Rule = "x.000")]。
如何确保将这些格式设置规则应用到修饰属性,而不干扰为这些相同 DTO 定义的数百个其他属性的 de/serialization?
我想我们需要一个可以应用格式规则的 class,一个带有字符串 属性 的自定义属性来保存格式规则,以及一个查找属性的自定义序列化程序并且只处理这些属性。这可能吗?
有没有更好的方法?我不愿意编写自己的序列化程序 - 我绝对更愿意尽可能多地利用很棒的 ServiceStack 代码。
ServiceStack 中没有 属性 级别的注释格式,但您可以执行类似 ignoring the decimal property 的操作并添加一个额外的字符串 属性 getter returns 你想要的格式,例如:
public class Dto
{
[IgnoreDataMember]
public decimal Decimal { get; set; }
public string DecimalFormat => Decimal.ToString("0.##");
}
我们有几个具有各种小数(和其他)属性的复杂 classes。在几十个小数属性中,它们都属于 3 个特定的格式规则:
- 前导零,一位小数
- 前导零,两位小数
- 无前导零,小数点后三位
我想用自定义属性修饰各种 DTO 十进制属性,以指定格式化规则,例如 [DecimalFormatRule(Rule = "x.000")]。
如何确保将这些格式设置规则应用到修饰属性,而不干扰为这些相同 DTO 定义的数百个其他属性的 de/serialization?
我想我们需要一个可以应用格式规则的 class,一个带有字符串 属性 的自定义属性来保存格式规则,以及一个查找属性的自定义序列化程序并且只处理这些属性。这可能吗?
有没有更好的方法?我不愿意编写自己的序列化程序 - 我绝对更愿意尽可能多地利用很棒的 ServiceStack 代码。
ServiceStack 中没有 属性 级别的注释格式,但您可以执行类似 ignoring the decimal property 的操作并添加一个额外的字符串 属性 getter returns 你想要的格式,例如:
public class Dto
{
[IgnoreDataMember]
public decimal Decimal { get; set; }
public string DecimalFormat => Decimal.ToString("0.##");
}