2013-07-26 38 views

Trả lời

22

Bạn sẽ phải viết tùy chỉnh của riêng mình JsonConverter và sử dụng tùy chọn này để chặn loại decimal để bạn có thể thay đổi cách được sắp xếp theo thứ tự. Dưới đây là một ví dụ:

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

Để sử dụng nó, chỉ cần vượt qua trong một trường hợp mới của bộ chuyển đổi tùy chỉnh này với phương pháp SerializeObject:

var json = JsonConvert.SerializeObject(yourObject, new DecimalFormatConverter()); 
+1

Lưu ý rằng văn hóa nên được quy định trong string.Format. Nếu không, bạn có thể nhận được 'lỗi' lạ. –

+8

có thể hữu ích cho ai đó: nếu bạn không muốn xuất các dấu ngoặc kép xung quanh giá trị bạn có thể sử dụng 'WriteRawValue' thay vì –

+1

{0: N2} sẽ bao gồm dấu phẩy. Nếu bạn sử dụng WriteRawValue và dấu phẩy là một phần của chuỗi, bạn sẽ nhận được một lỗi. – Karson

Các vấn đề liên quan