我已经实现了一个方法,根据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);
}
}
答案 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);
}
}