Chr*_*lsh 7 c# json.net jsonconverter
我有 ac# 类,我正在尝试使用Newtonsoft.Json. 该属性是一个枚举类型,我希望该值被序列化为“枚举名称的小写版本”。有一个JsonConverterAttribute可用于在属性上指定它,也有一个预写的,StringEnumConverter但我需要CamelCaseNamingStrategy在该转换器上指定,但我无法计算出语法。
我试图将它分配给属性本身:
public class C
{
[JsonConverter(typeof(StringEnumConverter),NamingStrategy=typeof(CamelCaseNamingStrategy))]
public ChartType ChartType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我也尝试将它类似地添加到枚举类型本身:
[JsonConverter(typeof(StringEnumConverter),NamingStrategy=typeof(CamelCaseNamingStrategy))]
public enum ChartType { Pie, Bar }
Run Code Online (Sandbox Code Playgroud)
但是语法是错误的。我在Newtonsoft 文档中找不到任何此类示例。
所需的序列化将是:"ChartType":"pie"或"ChartType":"bar"
有任何想法吗?谢谢。
好的,这似乎有效:
[JsonProperty("type")]
[JsonConverter(typeof(StringEnumConverter),
converterParameters:typeof(CamelCaseNamingStrategy))]
public ChartType ChartType { get; }
Run Code Online (Sandbox Code Playgroud)
AsNamingStrategy是StringEnumConverter使用converterParameters参数应用它的属性。这得到了我想要的输出。我认为这个例子在 Newtonsoft 文档中会很有用。
另一种可能的解决方案是使用 JsonSerializerSettings
var settings = new JsonSerializerSettings
{
Converters = new List<JsonConverter> {
new StringEnumConverter(new CamelCaseNamingStrategy())
}
};
var result = JsonConvert.SerializeObject(obj, settings);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5280 次 |
| 最近记录: |