C# 将空字符串反序列化为列表<;字符串>;

C# 将空字符串反序列化为列表<;字符串>;,c#,json,json.net,C#,Json,Json.net,我实现了一个根据json字符串返回列表的方法 在我意识到我正在尝试反序列化一个空字符串之前,它工作得很好。它不会崩溃,也不会引发异常。它返回一个null值,而不是一个空的列表 问题是,为了返回一个空的列表而不是null值,我可以触摸什么 return JsonConvert.DeserializeObject(content, typeof(List<string>)); 您可以使用运算符(??)执行此操作: 谢谢难道没有什么捷径可以代表开箱即用吗?谢谢西蒙!让我请你以一种通用的形

我实现了一个根据json字符串返回
列表的方法

在我意识到我正在尝试反序列化一个空字符串之前,它工作得很好。它不会崩溃,也不会引发异常。它返回一个
null
值,而不是一个空的
列表

问题是,为了返回一个空的
列表
而不是
null
值,我可以触摸什么

return JsonConvert.DeserializeObject(content, typeof(List<string>));
您可以使用运算符(
??
)执行此操作:


谢谢难道没有什么捷径可以代表开箱即用吗?谢谢西蒙!让我请你以一种通用的形式来解决这个问题(我已经编辑了我的帖子)。如您所知,我使用一种方法来反序列化接收到的json字符串。所以具体的
typeof(List)
是哪种类型的C#让我说
JsonConvert.DeserializeObject(内容、类型)
type.GetType()
错误;它将给出从
System.type
继承的一些具体类型,这不是您想要的。您需要
if(type==typeof(Object))
。在下一个
if
中,您也可以使用
==
(为了一致性)。
public object Deserialize(string content, Type type) {
    if (type.GetType() == typeof(Object))
        return (Object)content;
    if (type.Equals(typeof(String)))
        return content;

    try
    {
        return JsonConvert.DeserializeObject(content, type);
    }
    catch (IOException e) {
        throw new ApiException(HttpStatusCode.InternalServerError, e.Message);
    }
}
return JsonConvert.DeserializeObject(content, typeof(List<string>)) ?? new List<string>();
public T Deserialize<T>(string content)
{
    var settings = new JsonSerializerSettings
    { 
        NullValueHandling = NullValueHandling.Ignore    
    };

    try
    {
        return JsonConvert.DeserializeObject<T>(content, settings);
    }
    catch (IOException e) 
    {
        throw new ApiException(HttpStatusCode.InternalServerError, e.Message);
    }
}