在 C# 中的反序列化 (.net json) 或序列化 (XmlSerializer) 期间填充 NULL 值



我在代码中所做的是接收一个 JSON 文件并通过以下方式将其反序列化为我的自定义对象:

JsonConvert.DeserializeObject<MyObjectType>(response);

此时,MyObject 会将一些字符串属性设置为 NULL,我将使用以下方法将此对象序列化为 XML:

XmlSerializer serializer = new XmlSerializer(typeof(MyObjectType));
var XmlCase = String.Empty;
using (var stringWriter = new StringWriter())
{
using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter))
{
serializer.Serialize(xmlWriter, MyObject);
XmlCase = stringWriter.ToString();
}
}

我想要的是在 JsonConvert.DeserializeObject 期间用空字符串替换这些 NULL 值(可能我希望通过某些设置发生这种情况(,或者我希望在 XML 序列化期间发生这种情况。在这两种情况下,我想避免的是解析我的对象搜索 NULL 值。

首先,您需要在当前为 null 的字符串上指定一个默认的"空"值:

string myString = "";

然后,您需要告诉 JSON (反(序列化程序忽略空值,并使用设置对象使用其默认值填充字段。

var settings = new JsonSerializerSettings() {
NullValueHandling = NullValueHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Populate,
}
JsonConvert.DeserializeObject<MyObject>(Response, settings);

它现在应该按照您想要的方式运行。

最新更新