我正在为 Stack Exchange API 创建类。这过滤器对象 https://api.stackexchange.com/docs/types/filter类型包含成员filter_type
这将是safe
, unsafe
, or invalid
。所以我创建了一个像这样的枚举:
[JsonConverter(typeof(StringEnumConverter))]
public enum FilterType
{
safe,
@unsafe, // Here lies the problem.
invalid
}
Since unsafe
是一个关键字,我必须为其添加一些前缀。但是我怎样才能使值“不安全”自动映射到@unsafe
? JSON 示例:
{
"filter": "....",
"filter_type": "unsafe",
"included_fields": [
"...",
"....",
"....."
]
}
我怎样才能反序列化它,这样filter_type
自动转换为FilterType.@unsafe
?
Update- 解决了:
在标识符之前使用@符号可以使其与关键字相同。即使 @ 出现在智能感知中,它也能正常工作。
您可以使用 JsonProperty,如下所示
public enum FilterType
{
safe,
[JsonProperty("unsafe")]
@unsafe, // Here lies the problem.
invalid
}
然后就可以正常使用了
class MyClass
{
public FilterType filter_type { get; set; }
}
public class Program
{
public static void Main()
{
var myClass = JsonConvert.DeserializeObject<MyClass>(json);
var itsUnsafe = myClass.filter_type == FilterType.@unsafe;
Console.WriteLine(itsUnsafe);
}
public static string json = @"{
""filter"": ""...."",
""filter_type"": ""unsafe"",
""included_fields"": [
""..."",
""...."",
"".....""
]
}";
}
输出是:
true
您可以在这里查看工作示例:https://dotnetfiddle.net/6sb3VY https://dotnetfiddle.net/6sb3VY
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)