我有一个 c# 类,我正在尝试使用 Newtonsoft.Json
正确序列化它.该属性是一个枚举类型,我希望该值被序列化为“枚举名称的小写版本”。有一个JsonConverterAttribute
可用于在属性上指定此项以及预先编写的 StringEnumConverter
但我需要指定 CamelCaseNamingStrategy
在那个转换器上,但我无法计算出语法。
我试图将它分配给属性本身:
public class C
{
[JsonConverter(typeof(StringEnumConverter),NamingStrategy=typeof(CamelCaseNamingStrategy))]
public ChartType ChartType { get; set; }
}
我也尝试将它类似地添加到枚举类型本身:
[JsonConverter(typeof(StringEnumConverter),NamingStrategy=typeof(CamelCaseNamingStrategy))]
public enum ChartType { Pie, Bar }
但是语法是错误的。我在 Newtonsoft documentation 中找不到任何此类示例.
所需的序列化将是:
"ChartType":"pie"
或 "ChartType":"bar"
有任何想法吗?谢谢。
最佳答案
好的,这似乎有效:
[JsonProperty("type")]
[JsonConverter(typeof(StringEnumConverter),
converterParameters:typeof(CamelCaseNamingStrategy))]
public ChartType ChartType { get; }
如
NamingStrategy
是 StringEnumConverter
的属性它是使用 converterParameters
应用的范围。这得到了我想要的输出。我认为这个例子在 Newtonsoft 文档中会很有用。
关于c# - 在类属性上使用 JsonConverter 时选择 NamingStrategy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54484708/