2013-01-20 100 views
34

我打電話了布爾領域的互聯網服務和返回的數據爲bool是0或1但與我的模型我使用的是System.Bool轉換int型Json.Net

隨着Json.Net是有可能將0/1轉換爲我的模型的布爾值?

目前,我得到一個錯誤

Newtonsoft.Json.JsonSerializationException:錯誤的轉換數值 「0」,鍵入 'System.Boolean'

任何幫助將是真棒!

回答

84

端了我的模型內創建一個轉換器

public class BoolConverter : JsonConverter 
{ 
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    { 
     writer.WriteValue(((bool)value) ? 1 : 0); 
    } 

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    { 
     return reader.Value.ToString() == "1"; 
    } 

    public override bool CanConvert(Type objectType) 
    { 
     return objectType == typeof(bool); 
    } 
} 

然後

[JsonConverter(typeof(BoolConverter))] 
    public bool active { get; set; } 

希望這可以幫助別人

+1

根據不同的情況,你可能還需要'布爾?'的' CanConvert' –

+0

是否有可能將這個自定義轉換器應用於所有對象的所有布爾屬性,而無需添加JsonConverter屬性? – Grengas