【问题标题】:Deserializing an enum with a default value with Newtonsoft.JSON [duplicate]使用 Newtonsoft.JSON 反序列化具有默认值的枚举 [重复]
【发布时间】:2020-08-08 03:07:05
【问题描述】:

我有一个这样的 json 字符串

{
  'EnumValue': 'Foo'
}

我正在将此值反序列化为一个具有枚举值的类,该枚举具有可能的值 BarBaz
由于 "Foo" 未包含在此枚举中,因此使用 Newtonsofts JsonConverter 将此字符串转换为类实例会引发错误。
有什么方法可以在我的枚举中包含一个默认值来捕获所有任意值?
代码可以在this fiddle找到。

【问题讨论】:

标签: c# serialization enums json.net default


【解决方案1】:

据我从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;}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多