我有一个ISerializer接口,它有几个不同的实现和一个简单的契约:
string Serialize<T>(T data);
T Deserialize<T>(string serializedData);
其中一个实现是JSON序列化程序。我正在讨论如果传递到这两个方法中的任何一个的值为null,它应该如何表现。它应该返回null吗?还是空字符串?我意识到这是一个设计决策,我很好奇其他人是如何处理的,我的决策中应该考虑什么样的问题或设计考虑因素?谢谢
如果对象为null,则应将其序列化为JSON null
,并反序列化为C#null
(反之亦然)。
但是,如果T是不可为null的类型(例如int
或Timespan
),则会遇到问题。我不知道在那里该怎么做——通常行为(例如在json.net中)是返回零值——例如,试图将null反序列化为int会返回int 0。