7
Newtonsoft.Json.JsonSerializerを使用して10進数をシリアル化しています。JsonSerializer - 'N2'の書式設定で小数点以下桁数をシリアライズ
最後に0を使用するには、小数点以下1桁の10進数をシリアル化するように設定するにはどうすればよいですか。
つまり3.5は3.50にシリアル化されますか?
Newtonsoft.Json.JsonSerializerを使用して10進数をシリアル化しています。JsonSerializer - 'N2'の書式設定で小数点以下桁数をシリアライズ
最後に0を使用するには、小数点以下1桁の10進数をシリアル化するように設定するにはどうすればよいですか。
つまり3.5は3.50にシリアル化されますか?
あなた自身のカスタムJsonConverter
を書いて、それを使ってdecimal
タイプを傍受して、シリアル化する方法を変更する必要があります。ここでは例です:
public class DecimalFormatConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(decimal));
}
public override void WriteJson(JsonWriter writer, object value,
JsonSerializer serializer)
{
writer.WriteValue(string.Format("{0:N2}", value));
}
public override bool CanRead
{
get { return false; }
}
public override object ReadJson(JsonReader reader, Type objectType,
object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
単にSerializeObject
方法にこのカスタム・コンバータの新しいインスタンスを渡し、それを使用するには:文化はString.Formatの中で指定する必要があることを
var json = JsonConvert.SerializeObject(yourObject, new DecimalFormatConverter());
注意。さもなければ奇妙な「バグ」が出るかもしれません。 –
は誰かにとって役に立ちます。二重引用符を出力したくない場合は、代わりに 'WriteRawValue'を使用してください。 –
{0:N2}にはコンマが入ります。 WriteRawValueを使用し、コンマが文字列の一部である場合は、エラーが発生します。 – Karson