Wie kann ich eine Mindestanzahl von Dezimalstellen in Json.net erzwingen?

Wie kann ich eine Mindestanzahl von Dezimalstellen in Json.net erzwingen?

Sie können dies mit einem benutzerdefinierten JSON-Konverter tun:

class DecimalJsonConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof (decimal);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
        JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        writer.WriteRawValue(((decimal) value).ToString("F2", CultureInfo.InvariantCulture));
    }
}

Dies ist ein sehr einfacher Konverter. Möglicherweise müssen Sie es erweitern, um andere Fließkommatypen oder vielleicht sogar Integer-Typen zu unterstützen.

Instanziieren Sie jetzt Ihren Serialisierer und übergeben Sie ihm Ihren benutzerdefinierten Konverter, etwa so:

var serializer = new JsonSerializer();
serializer.Converters.Add(new DecimalJsonConverter());