2013-07-26 11 views

答えて

22

あなた自身のカスタム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()); 
+1

注意。さもなければ奇妙な「バグ」が出るかもしれません。 –

+8

は誰かにとって役に立ちます。二重引用符を出力したくない場合は、代わりに 'WriteRawValue'を使用してください。 –

+1

{0:N2}にはコンマが入ります。 WriteRawValueを使用し、コンマが文字列の一部である場合は、エラーが発生します。 – Karson

関連する問題