我通过在枚举值上添加EnumMember属性解决了该问题。Json.NET的默认值
StringEnumConverter完美地处理了这些属性。
例:
public enum MyEnum{ [EnumMember(Value = "some-enum-value")] SomeEnumValue, Value, [EnumMember(Value = "some-other-value")] SomeOtherValue}请注意,您只需要指定属性即可,例如破折号或其他不能在枚举中使用的特殊字符。大写小写由来处理
StringEnumConverter。因此,如果服务返回一个类似的值
someenumvalue,则应在枚举中像这样使用它
Someenumvalue。如果愿意
SomeEnumValue,可以使用该
EnumMember属性。万一服务以这种方式返回它,
someEnumValue您就可以这样使用它
SomeEnumValue(当您使用CamelCaseText属性时,它是开箱即用的)。
您可以在中轻松指定转换器和其他设置
JsonSerializerSettings。
这是我自己使用的设置的示例。
new JsonSerializerSettings{ ContractResolver = new CamelCasePropertyNamesContractResolver(), Converters = new List<JsonConverter> { new StringEnumConverter { CamelCaseText = true } }, NullValueHandling = NullValueHandling.Ignore};


