javascript - JavaScript 中的标记 enum 和 JSON

标签 javascript json enums asp.net-web-api

我有很多 C# 枚举,其中一些启用了标志。例如:

[Flags]
public enum MyEnum
{
  item1 = 0x0000,
  item2 = 0x0008
}

我将其克隆到 JavaScript 中,如下所示:

my.namespace.MyEnum = {
  ITEM1: "item1",
  ITEM2: "item2"
}

我正在使用全局 WebApi 转换器将枚举映射到字符串,因为我更喜欢将字符串与 REST API 一起使用:

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());

问题是,如果我创建一个使用此枚举的属性,它无法使用按位运算(即 my.namespace.MyEnum.ITEM1 | my.namespace.MyEnum.ITEM2)并获得所需的结果(“项目 1、项目 2”)。

除了删除字符串转换器之外,是否有任何适当的方法来在 JavaScript 中实现这种用于标记枚举的 DataContract + JS API?

最佳答案

虽然我不太喜欢 Javascript 中的枚举,也不喜欢此类标志运算符,但我认为这可能相当接近您想要的:

[my.namespace.MyEnum.ITEM1, my.namespace.MyEnum.ITEM2].join(", ") //=> "item1, item2"

var join = function() {
    return Array.prototype.join.call(arguments, ", ");
};

join(my.namespace.MyEnum.ITEM1, my.namespace.MyEnum.ITEM2); //=> "item1, item2"

关于javascript - JavaScript 中的标记 enum 和 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555142/

相关文章:

PHP 变量或 JSON 本地化以及如何检索它们

c# - 如何在这种情况下传递枚举

javascript - 为什么 {。 . . .0} 评估为 {}?

javascript - 在 iOS UIWebView 中评估 JavaScript 时出现 “SyntaxError: Unexpected EOF”

c# - JSON 序列化在派生类中缺少属性

具有关联值的 Swift 枚举

c++ - 如何将基类的枚举传递给子类的构造函数

javascript - 如何在 JavaScript 中使用另一个函数中的变量而不将该变量设置为全局变量?

javascript - 如何在 Rails 中访问 c​​sv 文件

javascript - 嵌套jquery有大量数据