49

Web サービスを呼び出していますが、bool フィールドに返されるデータは 0 または 1 ですが、私のモデルでは System.Bool を使用しています。

Json.Net を使用すると、モデルの bool に 0/1 をキャストできますか?

現在、エラーが発生しています

Newtonsoft.Json.JsonSerializationException: 値「0」を「System.Boolean」型に変換中にエラーが発生しました

どんな助けでも素晴らしいでしょう!!

4

1 に答える 1

113

コンバーターを作成することになった

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

これが他の誰かに役立つことを願っています

于 2013-01-20T19:07:33.700 に答える