readme
中是否有内置功能可以将枚举值序列化为蛇形名称?
目前,我手动提供价值:
Newtonsoft.Json
答案 0 :(得分:3)
Json.NET 12.0.1中实现了枚举值的可选蛇形框。现在可以为NamingStrategy
指定一个StringEnumConverter
:
新功能-在StringEnumConverter中添加了对NamingStrategy的支持
因此,您可以将SnakeCaseNamingStrategy
传递到StringEnumConverter
的任何constructors中,例如new StringEnumConverter(typeof(SnakeCaseNamingStrategy))
。
使用此方法,您现在可以通过向JsonSerializerSettings.Converters
添加适当的转换器,来指定序列化时,枚举应在全局范围内进行蛇形包装:
var settings = new JsonSerializerSettings
{
Converters = { new StringEnumConverter(typeof(SnakeCaseNamingStrategy)) },
};
var json = JsonConvert.SerializeObject(MyEnum.ValueOne, settings);
Assert.IsTrue(json == "\"value_one\""); // Passes successfully
或者,也可以使用SnakeCaseNamingStrategy
来选择枚举,如下所示:
[JsonConverter(typeof(StringEnumConverter), typeof(SnakeCaseNamingStrategy))]
enum MyEnum
{
ValueOne,
// Other values...
}
有关更多信息,请参见Issue #1862: [Feature] StringEnumConverter takes a NamingStrategy argument。