【问题标题】:Serialize JSON using DataAnnotation to apply decimal formatting rules使用 DataAnnotation 序列化 JSON 以应用十进制格式规则
【发布时间】:2017-10-12 05:29:42
【问题描述】:

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

  1. 前导零,小数点后一位
  2. 前导零,两位小数
  3. 没有前导零,三位小数

我想用自定义属性装饰各种 DTO 十进制属性,以指定格式规则,如 [DecimalFormatRule(Rule = "x.000")]。

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

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

有没有更好的方法?我不愿意编写自己的序列化程序 - 我肯定更喜欢尽可能多地利用令人敬畏的 ServiceStack 代码。

【问题讨论】:

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


【解决方案1】:

ServiceStack 中没有可用的属性级注释格式,但您可以执行ignoring the decimal property 之类的操作,并添加一个额外的字符串属性获取器来返回您想要的格式,例如:

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

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

【讨论】:

    猜你喜欢
    • 2015-10-11
    • 2023-04-09
    • 2013-07-29
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    相关资源
    最近更新 更多