.net - 如何将枚举定义转换为 JavaScript 对象(json)
问题描述
我也检查了这篇文章,但它给了我相同的结果。枚举定义:
public enum myEnum
{
variable1 = 1,
variable2 = 25,
variable3 = 35
}
这是我尝试过的:
var myJsObject= @Html.Raw(JsonConvert.SerializeObject(Enum.GetValues(typeof(myEnum)), new Newtonsoft.Json.Converters.StringEnumConverter()));
这就是它返回的内容:
["variable1","variable2","variable3"]
预期结果:
{"1":"variable1","25":"variable2","35":"variable3",}
我怎样才能做到这一点?
解决方案
你可以这样的事情..
public enum myEnum
{
variable1 = 1,
variable2 = 25,
variable3 = 35
}
static Dictionary<int,string> EnumToDictionary<T>() where T : struct, IConvertible
{
if (!typeof(T).IsEnum)
{
throw new ArgumentException("T must be an enum type");
}
var dictionary = Enum.GetValues(typeof(T))
.Cast<T>()
.ToDictionary( e=> Convert.ToInt32(e), e => e.ToString());
return dictionary;
}
使用...
var dictionary = EnumToDictionary<tEnum>();
var jsonResult = Newtonsoft.Json.JsonConvert.SerializeObject(dictionary);
推荐阅读
- python - 将 datetime.datetime 对象写入文件
- javascript - 有没有办法将广告添加到 chrome 扩展
- node.js - 通过 AWS Lambda 和 CloudFront 重定向 URL
- go - GoError:错误:无法在 web3.js:6347:37(47) 处使用给定密码解密密钥
- oracle - Oracle Database XE - 在安装期间设置 SID
- avfoundation - 将 AVCaptureSession `automaticallyConfiguresApplicationAudioSession` 设置为 false 的 AVAudioSession 设置
- symfony-forms - Symfony 5 / Easyadmin 3 - 创建了仅插入到数据库的 Fieldtrait,它不会更新
- spring-boot - 如何在 Spring Boot 中运行 bin/kafka-console-consumer.sh
- node.js - ethereumjs-wallet generate 不是函数错误
- reactjs - 不能在extendTheme(ChakraUI)中使用默认颜色