Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert an int to bool with Json.Net [duplicate]

I am calling a webservice and the returned data for a bool field is either 0 or 1 however with my model I am using a System.Bool

With Json.Net is it possible to cast the 0/1 into a bool for my model?

Currently I am getting an error

Newtonsoft.Json.JsonSerializationException: Error converting value "0" to type 'System.Boolean'

Any help would be awesome!!

like image 743
Diver Dan Avatar asked Jan 20 '13 18:01

Diver Dan


1 Answers

Ended up creating a converter

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

Then within my model

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

hope this helps someone else

like image 192
Diver Dan Avatar answered Nov 12 '22 22:11

Diver Dan