使用Json.Net将int转换为bool

52
我正在调用一个Web服务,返回的布尔字段数据为0或1,但是我使用的模型是System.Bool。是否可以使用Json.Net将0/1强制转换为我的模型中的bool类型?
目前我收到了一个错误:
Newtonsoft.Json.JsonSerializationException: 无法将值“0”转换为类型“System.Boolean” 任何帮助都将是很棒的!!
1个回答

118

最终创建了一个转换器:

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

4
根据情况,您在CanConvert中可能还需要使用bool? - Jorge Yanes Diez
5
有没有可能在不添加JsonConverter属性的情况下,将这个自定义转换器应用于所有对象中的所有bool属性? - Grengas
ReadJson 更改为 return reader.Value != null && reader.Value.ToString() == "1"; 将考虑到空值。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接