使用 Newtonsoft.JSON 反序列化具有默认值的枚举
Deserializing an enum with a default value with Newtonsoft.JSON
我有一个 json 这样的字符串
{
'EnumValue': 'Foo'
}
我正在将此值反序列化为一个 class,其中包含一个可能的值 Bar
和 Baz
.
的枚举
由于 "Foo"
不包含在此枚举中,因此使用 Newtonsofts JsonConverter 将此字符串转换为 class 实例会引发错误。
有什么方法可以在我的枚举中包含一个默认值来捕获所有任意值?
代码可以在 this fiddle.
中找到
据我how Newtonsoft parses enums的了解,这是不可能的。
您可以尝试添加一个字符串 属性 并在 get 属性 (Fiddle here) 中解析它:
public SampleEnum EnumRealValue {
get {
if(Enum.TryParse<SampleEnum>(EnumValue, out SampleEnum result)) {
return result;
} else {
return default(SampleEnum);
}
}
}
public string EnumValue {get; set;}
我有一个 json 这样的字符串
{
'EnumValue': 'Foo'
}
我正在将此值反序列化为一个 class,其中包含一个可能的值 Bar
和 Baz
.
的枚举
由于 "Foo"
不包含在此枚举中,因此使用 Newtonsofts JsonConverter 将此字符串转换为 class 实例会引发错误。
有什么方法可以在我的枚举中包含一个默认值来捕获所有任意值?
代码可以在 this fiddle.
据我how Newtonsoft parses enums的了解,这是不可能的。
您可以尝试添加一个字符串 属性 并在 get 属性 (Fiddle here) 中解析它:
public SampleEnum EnumRealValue {
get {
if(Enum.TryParse<SampleEnum>(EnumValue, out SampleEnum result)) {
return result;
} else {
return default(SampleEnum);
}
}
}
public string EnumValue {get; set;}