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