使用 Newtonsoft.JSON 反序列化具有默认值的枚举

Deserializing an enum with a default value with Newtonsoft.JSON

我有一个 json 这样的字符串

{
  'EnumValue': 'Foo'
}

我正在将此值反序列化为一个 class,其中包含一个可能的值 BarBaz.
的枚举 由于 "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;}