【发布时间】:2016-03-16 16:34:27
【问题描述】:
我正在为 Stack Exchange API 创建类。 filter_object 类型包含一个成员 filter_type,它将是 safe、unsafe 或 invalid。所以我创建了一个这样的枚举:
[JsonConverter(typeof(StringEnumConverter))]
public enum FilterType
{
safe,
@unsafe, // Here lies the problem.
invalid
}
由于unsafe 是一个关键字,我必须为其添加一些前缀。但是如何使值“不安全”自动映射到@unsafe?示例 JSON:
{
"filter": "....",
"filter_type": "unsafe",
"included_fields": [
"...",
"....",
"....."
]
}
如何反序列化它,使filter_type 自动转换为FilterType.@unsafe?
更新 - 已解决:
在标识符之前使用@符号可以与关键字相同。即使 @ 出现在智能感知中,它也能正常工作。
【问题讨论】:
-
您也可以像在 C# 中对类名等使用大写字母一样。并添加驼峰式转换器,见this question
-
所以你不接受我的回答,那真的很好:D
-
@AlbertoMonteiro 这不是正确的答案。即使未映射,如果名称正确,它也会自动被解析为正确的枚举。问题是
unsafe是一个关键字。我已经遇到了前缀@,以便可以将关键字用作标识符。它出现在智能感知中,所以我认为它不起作用。但是在测试中我发现它是正确的。看到没有其他答案,我接受了你的。但是,这不是所做的。所以我不接受它并编辑了我的问题以包含解决方案。我看不出有什么不妥。 -
@AlbertoMonteiro 我会否决它,因为它不是正确的解决方案,但投票已锁定。 JsonProperty 映射到属性,而不是值。因为它已经包含@,所以它起作用了。试试
_unsafe。你的方法会抛出异常。
标签: c# json enums json-deserialization