I wasn’t completely satisfied with all of the techniques thus far to achieve this. JsonConverterAttribute seemed the most promising, but I couldn’t live with hard-coded parameters and proliferation of converter classes for every combination of options.
So, I submitted a PR that adds the ability to pass various arguments to JsonConverter and JsonProperty. It’s been accepted upstream and I expect will be in the next release (whatever’s next after 6.0.5)
You can then do it like this:
public class Measurements
{
[JsonProperty(ItemConverterType = typeof(RoundingJsonConverter))]
public List<double> Positions { get; set; }
[JsonProperty(ItemConverterType = typeof(RoundingJsonConverter), ItemConverterParameters = new object[] { 0, MidpointRounding.ToEven })]
public List<double> Loads { get; set; }
[JsonConverter(typeof(RoundingJsonConverter), 4)]
public double Gain { get; set; }
}
Refer to the CustomDoubleRounding() test for an example.