广告制作是做什么的,临淄专业网站优化哪家好,企业整站推广,php电子商务网站开发实例使用Newtonsoft.Json将数据对象序列化为Json字符串时#xff0c;如果有布尔类型的属性值时#xff0c;一般会将bool类型序列化为字符串#xff0c;true值序列化为true#xff0c;false值序列化为false。如下面的类型序列化后的结果如下#xff1a;
public class UserInfo… 使用Newtonsoft.Json将数据对象序列化为Json字符串时如果有布尔类型的属性值时一般会将bool类型序列化为字符串true值序列化为truefalse值序列化为false。如下面的类型序列化后的结果如下
public class UserInfo
{public string Name { get; set; }public string Email { get; set; }public string Password { get; set; }public bool isActive { get; set; }
}UserInfo user new UserInfo();
user.Name Test;
user.Email 123456qq.com;
user.isActive true;Console.WriteLine(JsonConvert.SerializeObject(user));如果序列化时需要将布尔值序列化为数字则需要借助JsonConverter特性类指定专门的转换类执行转换操作但Newtonsoft.Json.Converters命名空间下并没有提供相应的转换类需要继承JsonConverter或者JsonConverter类自定义转换类。 本文测试时定义Bool2IntConverter并继承自类JsonConverter后者中的主要方法及属性定义如下由于仅测试序列化因此在Bool2IntConverter中仅需着重处理WriteJson和CanConvert即可主要代码如下
public class Bool2IntConverter : JsonConverter
{public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer){if (value null){writer.WriteValue(0);return;}bool bValue(bool)value;writer.WriteValue(bValue?1:0);}public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer){return null;}public override bool CanConvert(Type objectType){if (objectType typeof(Boolean) || objectType typeof(Boolean?)){return true;}return false;}
}使用Bool2IntConverter类的方式及测试结果如下所示 public class UserInfo{public string Name { get; set; }public string Email { get; set; }public string Password { get; set; }[JsonConverter(typeof(Bool2IntConverter))]public bool isActive { get; set; }}参考文献 [1]百度AI自动生成 [2]https://www.cnblogs.com/yanweidie/p/4605212.html