2013-01-20 6 views
34

Wołam usługa i zwróconych danych dla pola bool jest 0 lub 1 jednak z mojego modelu używam System.BoolKonwersja int na bool z Json.NET

Z Json.NET jest możliwe jest rzucenie 0/1 do boolu dla mojego modelu?

Obecnie otrzymuję błąd

Newtonsoft.Json.JsonSerializationException: Błąd podczas konwersji wartość "0", aby wpisać 'System.Boolean'

Każda pomoc będzie niesamowite !!

Odpowiedz

84

skończył tworzenie konwertera

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

Wtedy w moim modelu

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

nadzieję, że to pomoże ktoś inny

+1

W zależności od sytuacji, może być konieczne 'bool?' W ' CanConvert' –

+0

Czy istnieje możliwość zastosowania tego niestandardowego konwertera do wszystkich właściwości boolowych we wszystkich obiektach bez dodawania atrybutów JsonConverter? – Grengas