web-dev-qa-db-fra.com

Convertir un int en bool avec Json.Net

J'appelle un webservice et les données renvoyées pour un champ booléen sont soit 0 soit 1 mais avec mon modèle j'utilise un System.Bool

Avec Json.Net, est-il possible de lancer le 0/1 dans un bool pour mon modèle?

Je reçois actuellement une erreur

Newtonsoft.Json.JsonSerializationException: erreur lors de la conversion de la valeur "0" en type "System.Boolean"

Toute aide serait géniale !!

44
Diver Dan

J'ai fini par créer un convertisseur

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

Puis dans mon modèle

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

j'espère que ceci aide quelqu'un d'autre

102
Diver Dan