C# 在类级别配置Json.NET序列化设置

C# 在类级别配置Json.NET序列化设置,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,我希望我的类使用驼峰大小写命名约定进行序列化和反序列化。我知道我可以使用JsonConvert.SerializeObject(对象,设置)重载,如下所述: 是否有任何方法(通过属性)在类级别应用相同的配置,以便不需要重写序列化设置 我可以写一个,但对于这样一件简单的事情来说,这看起来有点过分了。如果你使用的是Json.NET 9.0.1或更高版本,你可以使用JsonObjectAttribute上的NamingStrategyType属性来实现你想要的。如果需要将参数传递给NamingStra

我希望我的类使用驼峰大小写命名约定进行序列化和反序列化。我知道我可以使用
JsonConvert.SerializeObject(对象,设置)
重载,如下所述:

是否有任何方法(通过属性)在类级别应用相同的配置,以便不需要重写序列化设置


我可以写一个,但对于这样一件简单的事情来说,这看起来有点过分了。

如果你使用的是Json.NET 9.0.1或更高版本,你可以使用
JsonObjectAttribute
上的
NamingStrategyType
属性来实现你想要的。如果需要将参数传递给
NamingStrategy
的构造函数,请使用
NamingStrategyParameters
属性指定它们。下面是一个如何使用驼峰大小写命名策略指定类的示例

[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
public class Foo
{
    public string Bar;
}

这正是我需要的!我在中看到了这种方法,但在我的解决方案中还没有找到必要的类(正如我后来发现的,因为它基于v6.0.8)。由于我在一个更大的平台上工作,我需要知道更新Newtonsoft版本是否会导致意外问题。有什么意见吗?使用Newtonsoft 6是否有可能实现这一目标?我知道该库的作者没有做很多突破性的更改,因此您可能不会有任何问题,但我不确定通过更新Json.NET您可能会遇到哪些其他问题。也许你可以试试看。至于用Json.NET6实现这一点,我真的不确定您如何才能做到这一点。您可能可以使用自定义ContractResolver或自定义JsonConverter执行此操作,但我不确定。它不会将camel case约定应用于基类的属性。。。因此,如果我在一个子类上应用该属性,我的一半道具都在cammel案例中,其余的都使用默认设置序列化。。(v10.0.3)我建议您创建一个功能请求,向NamingStrategy添加一个属性以处理基类成员。目前,如果您有权修改基类并希望它始终以驼峰大小写序列化,那么您可以使用
NamingStrategyType
向基类添加
JsonObjectAttribute
[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
public class Foo
{
    public string Bar;
}