我有一个ISerializer接口,有几个不同的实现和一个简单的合同:
string Serialize<T>(T data);
T Deserialize<T>(string serializedData);
其中一个实现是JSON序列化程序。我正在讨论如果传递给这两种方法中的值为null,它应该如何表现。它应该返回null吗?还是空字符串?我意识到这是一个设计决定,我很好奇其他人如何处理它以及应该考虑哪些因素或设计因素?感谢。
答案 0 :(得分:0)
如果对象为null,则应将其序列化为JSON IObservable<IList<T>> query = source
.Publish(obs => obs
.Buffer(() => obs.Take(1).IgnoreElements()
.Concat(Observable.Return(default(T)).Delay(duration, scheduler))
.Amb(obs.IgnoreElements())));
.Publish()
.RefCount();
并反序列化为C#null
(反之)。
如果T是非可空类型(例如null
或int
),您将遇到问题。我不确定该怎么做 - 通常行为(例如在json.net中)是返回零值 - 例如,尝试将null反序列化为int返回一个int 0。