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

时间:2017-07-12 10:20:04

标签: c# json xml serialization deserialization

我在代码中所做的是接收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值。

1 个答案:

答案 0 :(得分:2)

首先,你需要指定一个默认的“空”&#39;当前为null的字符串的值:

string myString = "";

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

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

它现在应该按照你想要的方式行事。