C#Json序列化和序列化bool变量

原创
小哥 3年前 (2022-11-07) 阅读数 13 #C#
文章标签 C#

问题描述:

Json当串行化时,Bool类型转换string类型,然后反序列化以获取该类型,以便于我的字段类型不匹配。

解决方案:

/// 
/// 自定义布尔类型数据转换规则
/// 
public class MyBoolConverter : JsonConverter
{
    private const string TrueStr = "TRUE";
    private const string FalseStr = "FALSE";
    public override bool CanConvert(Type objectType) => true;

    //反序列化
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.ValueType == typeof(string))
        {
            if ((string)reader.Value == TrueStr)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        return false;
    }

    //序列化
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        if (value.GetType() == typeof(bool))
        {
            bool result = (bool)value;
            if (result)
            {
                writer.WriteValue(TrueStr);
            }
            else
            {
                writer.WriteValue(FalseStr);
            }
        }
    }
}

如何使用

//类型定义中需要操作的字段/将此功能添加到属性:
private class MyClass
{
    [JsonConverter(typeof(MyBoolConverter))]
    public bool MyBool;
}
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除