当前位置:  开发笔记 > 编程语言 > 正文

阻止ServiceStack序列化ENUM

如何解决《阻止ServiceStack序列化ENUM》经验,为你挑选了1个好方法。

这是我目前的回复......(来自我的RESTful API)

[
  {
    "batchID": 1,
    "status": "IN_PROGRESS"
  }
]

但我真正想要的是......

[
  {
    "batchID": 1,
    "status": 10   -- which means "In_progress" in my ENUM
  }
]

这是我的c#DTO ......

public class ReplyItem
{
    public int BatchID { get; set; }            
    public BatchStatusCodes Status { get; set; }
}

所以在JSON中我BatchStatusCode被序列化为一个字符串,但我希望它是一个整数,因为ENUM具有特定的每个值集(在5的上升)

一个解决方案:我知道我可以BatchStatusCodes改为一个int,每当我使用它时,我可以将ENUM转换为整数,但在回复中包含ENUM会使它稍微更自我描述.

我希望也许我可以使用一个属性或一些这样的花哨技巧,或者可能设置一个服务范围的变量来不处理当前的枚举?



1> mythz..:

您可以[Flags]向要将其视为数字的枚举添加属性,例如:

[Flags]
BatchStatusCodes { ... } 

否则,您可以获取ServiceStack.Text将所有枚举视为整数:

JsConfig.TreatEnumAsInteger = true;

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有