使用 Json.Net 将 int 转换为 bool [重复]

Posted

技术标签:

【中文标题】使用 Json.Net 将 int 转换为 bool [重复]【英文标题】:Convert an int to bool with Json.Net [duplicate] 【发布时间】:2013-01-03 20:32:27 【问题描述】:

我正在调用 Web 服务,返回的布尔字段数据为 0 或 1,但是对于我的模型,我使用的是 System.Bool

使用 Json.Net 是否可以将 0/1 转换为我的模型的布尔值?

目前我收到一个错误

Newtonsoft.Json.JsonSerializationException:将值“0”转换为类型“System.Boolean”时出错

任何帮助都会很棒!

【问题讨论】:

【参考方案1】:

最终创建了一个转换器

 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; 

希望这对其他人有帮助

【讨论】:

视情况而定,CanConvert中可能还需要bool? 有没有办法在不添加 JsonConverter 属性的情况下将此自定义转换器应用于所有对象的所有布尔属性?

以上是关于使用 Json.Net 将 int 转换为 bool [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 json.net 将 c# 通用列表转换为 json?

如何使用 json.net 将 c# 通用列表转换为 json?

如何使用 json.net 将数据表转换为 json 字符串?

如何将 HTML 表转换为 JSON 并将 JSON 与 JSON.NET 一起使用?

xml转换为json格式时,如何将指定节点转换成数组 Json.NET

使用 Json.Net 转换为 XML 时如何序列化空数组