在类属性上使用 JsonConverter 时选择命名策略

我有一个c#类,我正在尝试使用正确序列化。该属性是枚举类型,我希望将值序列化为“枚举名称的小写版本”。有一个可用于在属性上指定此属性,还有一个预写,但我需要在该转换器上指定CamelCaseNamingStrategy,但我无法计算出语法。Newtonsoft.JsonJsonConverterAttributeStringEnumConverter


我试图在属性本身上分配它:


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文档中找不到任何这方面的例子。


所需的序列化将是:或"ChartType":"pie""ChartType":"bar"


有什么想法吗?谢谢。


守着星空守着你
浏览 152回答 3
3回答

MMMHUHU

好的,这似乎有效:[JsonProperty("type")] [JsonConverter(typeof(StringEnumConverter),      converterParameters:typeof(CamelCaseNamingStrategy))]public ChartType ChartType { get; }  由于命名策略是使用转换器参数应用的属性。这得到了我想要的输出。我认为这方面的一个例子在Newtonsoft文档中很有用。StringEnumConverter

开满天机

另一种可能的解决方案是使用JsonSerializerSettingsvar settings = new JsonSerializerSettings{&nbsp; &nbsp; Converters = new List<JsonConverter> {&nbsp; &nbsp; &nbsp; &nbsp; new StringEnumConverter(new CamelCaseNamingStrategy())&nbsp; &nbsp; }};var result = JsonConvert.SerializeObject(obj, settings);

隔江千里

这适用于我在.Net Core Web API中的单个位置启用骆驼外壳:[JsonConverter(typeof(StringEnumConverter),&nbsp;true)]请注意,可以将构造函数参数追加到第一个参数给出的类型中,并具有以下重载构造函数:StringEnumConverterStringEnumConverter(bool&nbsp;camelCaseText)当然,通常首选全局启用此功能,例如,此处将对此进行讨论。
打开App,查看更多内容
随时随地看视频慕课网APP