将空字符串反序列化为List <string>

时间:2016-02-02 15:43:54

标签: c# json json.net

我已经实现了一个方法,根据json字符串返回List<string>

我已经意识到我正在尝试反序列化一个空字符串。它不会崩溃也不会引发异常。它返回null值而不是空List<string>

问题是,为了给我一个空的List<string>而不是null值,我可以触摸什么?

return JsonConvert.DeserializeObject(content, typeof(List<string>));

修改 通用方法:

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);
    }
}

1 个答案:

答案 0 :(得分:6)

您可以使用null coalescing运算符(??)执行此操作:

return JsonConvert.DeserializeObject(content, typeof(List<string>)) ?? new List<string>();

您也可以将NullValueHandling设置为NullValueHandling.Ignore,如下所示:

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);
    }
}