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());