Before 3.3.1 if you wanted to control serialization you would have to decorate your model with attributes, for example, if your REST API used snake case naming convention:

public class User { [JsonProperty("phone_number")] public string PhoneNumber { get; set; } }

As of 3.3.1 you can provide JsonSerializerSettings to the config - this saves you having to add the attributes to properties individually, which will make your code cleaner. For example, if your REST API used snake case naming convention:

// When directly creating a RestClient instance dynamic restClient = new RestClient("https://dalsoft.co.uk", new Config() .SetJsonSerializerSettings(new JsonSerializerSettings { ContractResolver = new DefaultContractResolver { NamingStrategy = new SnakeCaseNamingStrategy() } })); // When using IHttpClientFactory services .AddRestClient(Name, "https://dalsoft.co.uk") .SetJsonSerializerSettings(new JsonSerializerSettings { ContractResolver = new DefaultContractResolver { NamingStrategy = new SnakeCaseNamingStrategy() } });

Now the SnakeCaseNamingStrategy ContractResolver is used by default when deserializing responses from your REST API.

To find out more about DalSoft.RestClient including the new JsonSerializerSettings head over to https://restclient.dalsoft.io