Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果传递空值,JSON序列化程序的默认行为是什么?_C#_Json_Serialization_Json.net - Fatal编程技术网

C# 如果传递空值,JSON序列化程序的默认行为是什么?

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吗?还是空字符串?我意识到这是一个设计决策,我很好奇其他人是如何处理的,我

我有一个ISerializer接口,有几个不同的实现和一个简单的契约:

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时该怎么做