C# 使用JSON.NET将JSON转换为XML:仅当不为null时才将元素转换为属性

C# 使用JSON.NET将JSON转换为XML:仅当不为null时才将元素转换为属性,c#,xml,json,json.net,C#,Xml,Json,Json.net,我们使用JSON.NET将分层对象转换为JSON,然后再转换为XML 我们知道反对这样做的理由,但有几个 支持它的论点,我们已经尝试了很多东西来达到这一点 我们遇到的一个问题是,有时属性会有空值。当调用时,这很好,但是当它是一个属性时,我们会抛出一个NullReferenceException。我们的首选方法是将空字符串转换为空字符串,但是完全忽略它们是可以接受的 我们如何处理这个问题?一点分析表明,我们得到的所有NullReferenceException都是关于string属性的。我将以下内

我们使用JSON.NET将分层对象转换为JSON,然后再转换为XML

我们知道反对这样做的理由,但有几个 支持它的论点,我们已经尝试了很多东西来达到这一点

我们遇到的一个问题是,有时属性会有空值。当调用时,这很好,但是当它是一个属性时,我们会抛出一个
NullReferenceException
。我们的首选方法是将空字符串转换为空字符串,但是完全忽略它们是可以接受的


我们如何处理这个问题?

一点分析表明,我们得到的所有
NullReferenceException
都是关于
string
属性的。我将以下内容放在getter中,以返回
字符串。如果字符串确实没有初始化,则返回空的
而不是
null
。这不是一个优雅的解决方案,但它适用于我们的情况


你从哪里获得NRE?见下文;它位于
string
properties上。一个小小的getter改动为这种情况提供了一个坚固的、但针对具体情况的补丁。
    [JsonProperty(PropertyName = "@Code")]
    public string ProductCode
    {
        get { return _productCode == null ? string.Empty : _productCode ; }
        set { _productCode = value.Trim(); }
    }