使用 DataAnnotation 序列化 JSON 以应用小数格式规则

Serialize JSON using DataAnnotation to apply decimal formatting rules

我们有几个具有各种小数(和其他)属性的复杂 classes。在几十个小数属性中,它们都属于 3 个特定的格式规则:

  1. 前导零,一位小数
  2. 前导零,两位小数
  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.##");
}