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