Serhii Shushliapin
Serhii Shushliapin

Reputation: 2708

Configure Json.NET serialization settings on a class level

I want my class to be serialized and deserialized using camel case naming convention. I know I can use the JsonConvert.SerializeObject(object, settings) overload as stated here:

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

Is there any way to apply the same configuration on a class level (via attributes) so that I do not need to override the serialization settings?

I could write a custom converter but that looks like an overkill for such a simple thing.

Upvotes: 11

Views: 9370

Answers (1)

TylerBrinkley
TylerBrinkley

Reputation: 1126

If you're using Json.NET 9.0.1 or later you can use the NamingStrategyType property on the JsonObjectAttribute to achieve what you want. If you need to pass arguments to the NamingStrategy's constructor then specify them with the NamingStrategyParameters property. Below is an example of how to specify a class with a camel case naming strategy.

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

Upvotes: 26

Related Questions