空属性与新类?

时间:2017-07-21 16:24:16

标签: c# json performance oop serialization

将类似数据从json反序列化为类对象时。是否更有效:

A)有一个可能具有null属性的类吗?

B)有一个单独的类,只有你期望看到的属性吗?

例如:在我想要这样的数据的情况下:

public class Author
{
    public Data data { get; set; }
}

public class Data
{
    public string first { get; set; }
    public string prev { get; set; }
    public string next { get; set; }
    public string self { get; set; }
    public string type { get; set; }
    public string id { get; set; }
}

我们假设在这种情况下,只有idtype填充Author而我们永远不会期望其他人。

然后执行以下操作会更有效/更好吗?

public class Author
{
    public AuthorData data { get; set; }
}

public class AuthorData
{
    public string type { get; set; }
    public string id { get; set; }
}

这显然是Data可能在不同地方以不同方式使用的情况,因此在不同时间其他属性为null。

通过回收Data,我们的代码库显然会有更少的对象,但这样做会如何影响应用程序的执行? 使用通常类型化的类进行反序列化是“错误的”吗?

1 个答案:

答案 0 :(得分:1)

虽然正如评论中所说的那样,在保留null属性方面存在最小的速度和大小差异,如果你有能力忽略那些次要的优点,我将包含始终包含没有值的属性。

为什么呢?这意味着在将JSON解析为接收端的相应类之前,接收方不必首先检查每个属性是否存在。

另外,如果我在C#应用程序中序列化你的JSON,那么该属性将会再次出现在默认值中,我仍然必须构建如何处理属性的空值,所以你可能也是如此通过至少知道财产将始终存在,使接收者更容易。