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

时间:2017-06-28 14:31:54

标签: c# json serialization json.net

我希望使用camel case命名约定对我的类进行序列化和反序列化。我知道我可以使用here所述的JsonConvert.SerializeObject(object, settings)重载:

var serializerSettings = new JsonSerializerSettings();
serializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
var json = JsonConvert.SerializeObject(product, serializerSettings);

有没有办法在类级别(通过属性)应用相同的配置,以便我不需要覆盖序列化设置?

我可以写一个custom converter,但这对于这么简单的事情来说就像是一种矫枉过正。

1 个答案:

答案 0 :(得分:13)

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

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