c# - 在类属性上使用 JsonConverter 时选择 NamingStrategy

标签 c# json.net jsonconverter

我有一个 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/

相关文章:

c# - 将 List<object> 转换为 List<myclass> c#

c# - 如何解决 WMI 请求的 "Provider load failure"?

c# - 为什么一个基本的单线程 C# 控制台应用程序需要 3 个线程?

json.net - 使用 Json.NET 进行 Bson 数组(反)序列化

c# - 序列化不同类的对象列表(实现通用接口(interface))仅呈现接口(interface)属性(如 IActionResult)

c# - System.Text.Json JsonConverter 字符串数组到单个字符串

c# - 如何使用 MSBuild 在项目属性中附加条件编译符号?

NHibernate DateTimeOffsetType代理源码?

c# - 当 Newtonsoft.JSON 反序列化失败时,有没有办法返回自定义错误?

c# - 在自定义 JsonConverter 中,如何确定 Utf8JsonReader 数字标记是小数还是长整型?