![](/img/trans.png)
[英]C# Deserializing a Dictionary<(Enum,Enum),string> with JSON.NET
[英]Json.Net - Deserialized to an Enum in c#
我正在使用Json.Net反序列化
我有一个具有此类枚举属性的ac#类:
public enum MyEnum {
House,
Cat,
Dog
}
我的Json:
"MyEnum ": "House",
"MyEnum ": "Cat",
"MyEnum ": "Doc<woof>"
House
和Cat
反序列化,但是Dog<woof>
当然不会。 如何让Json.Net忽略或处理woof
?
您将需要定义一个自定义JsonConverter 。 这可能看起来像这样:
class MyEnumConverter : JsonConverter<MyEnum>
{
public override MyEnum ReadJson(JsonReader reader, Type objectType, MyEnum existingValue, bool hasExistingValue, JsonSerializer serializer)
{
var token = reader.Value as string ?? reader.Value.ToString();
var stripped = Regex.Replace(token, @"<[^>]+>", string.Empty);
if (Enum.TryParse<MyEnum>(stripped, out var result))
{
return result;
}
return default(MyEnum);
}
public override void WriteJson(JsonWriter writer, MyEnum value, JsonSerializer serializer)
{
writer.WriteValue(value.ToString());
}
}
然后使用[JsonConverter]属性装饰枚举:
[JsonConverter(typeof(MyEnumConverter))]
enum MyEnum
{
House,
Dog,
Cat,
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.