我遇到了使用布尔值反序列化XML文件的问题.我反序列化的源XML文件是从VB6应用程序创建的,其中所有布尔值都是大写的(True,False).当我尝试反序列化XML时,我得到了一个
System.FormatException: The string 'False' is not a valid Boolean value.
Run Code Online (Sandbox Code Playgroud)
有没有办法说用属性忽略大小写?
假设我们有一个可以由XmlSerializer序列化/反序列化的类.它会是这样的:
[XmlRoot("ObjectSummary")]
public class Summary
{
public string Name {get;set;}
public string IsValid {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我们有一个xml,如下所示:
<ObjectSummary>
<Name>some name</Name>
<IsValid>Y</IsValid>
<ObjectSummary>
Run Code Online (Sandbox Code Playgroud)
使用布尔属性IsValid而不是字符串属性是更好的决定,但在这种情况下,我们需要添加一些额外的逻辑来将数据从字符串转换为bool.
解决此问题的简单直接方法是使用其他属性并将一些转换逻辑放入IsValid getter中.
谁能提出更好的决定?以某种方式或类似的方式在属性中使用类型转换器?
快速提问:
在JSONNet中 - 如何将bool true/false序列化为bool 1/0
我可以看到我们如何处理空值以及所有似乎无法找到如何做到这一点.
这可能吗?