我有一个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"有什么想法吗?谢谢。
3 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
好的,这似乎有效:
[JsonProperty("type")]
[JsonConverter(typeof(StringEnumConverter),
converterParameters:typeof(CamelCaseNamingStrategy))]
public ChartType ChartType { get; }
由于命名策略是使用转换器参数应用的属性。这得到了我想要的输出。我认为这方面的一个例子在Newtonsoft文档中很有用。StringEnumConverter
开满天机
TA贡献1786条经验 获得超13个赞
另一种可能的解决方案是使用JsonSerializerSettings
var settings = new JsonSerializerSettings
{
Converters = new List<JsonConverter> {
new StringEnumConverter(new CamelCaseNamingStrategy())
}
};
var result = JsonConvert.SerializeObject(obj, settings);
- 3 回答
- 0 关注
- 148 浏览
添加回答
举报
0/150
提交
取消