使用DataAnnotation序列化JSON以应用十进制格式规则

时间:2017-05-12 19:48:12

标签: c# json servicestack data-annotations servicestack-text

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

  1. 前导零,小数点后一位
  2. 前导零,小数点后两位
  3. 没有前导零,三位小数
  4. 我想用自定义属性修饰各种DTO十进制属性,以指定格式化规则,如[DecimalFormatRule(Rule =“x.000”)]。

    如何确保将这些格式规则应用于修饰属性,而不会干扰为这些相同DTO定义的数百个其他属性的de / serialization?

    我认为我们需要一个可以应用格式规则的类,带有字符串属性的自定义属性来保存格式规则,以及一个查找属性的自定义序列化程序,它只处理这些属性。这甚至可能吗?

    有更好的方法吗?我不愿意编写自己的序列化程序 - 我绝对希望尽可能多地利用很棒的ServiceStack代码。

1 个答案:

答案 0 :(得分:1)

ServiceStack中没有可用的属性级注释格式,但您可以执行ignoring the decimal property之类的操作,并添加一个返回所需格式的其他字符串属性getter,例如:

public class Dto
{
    [IgnoreDataMember]
    public decimal Decimal { get; set; }

    public string DecimalFormat => Decimal.ToString("0.##");
}