检查集合初始值设定项中是否为null
本文关键字:是否 null 集合 检查 | 更新日期: 2023-09-27 18:27:23
我正在使用Json.NET解析Json
文档,并使用Collection Initializer
创建ArrayList
,如下所示
var array = new ArrayList
{
inputJson["abc"].ToString(),
inputJson["def"].Value<float>(),
inputJson["ghi"].Value<float>()
};
现在,我想添加一个null检查,这样,如果Json文档中缺少其中一个属性,它就不会引发异常。
感谢
像这样的东西可以实现
var array = new ArrayList
{
inputJson["abc"] != null ? inputJson["abc"].ToString() : "",
inputJson["def"] != null ? inputJson["def"].Value<float>() : 0.0F,
inputJson["ghi"] != null ? inputJson["ghi"].Value<float>() : 0.0F
};
我会创建扩展方法来处理这个问题。注意,我对这里的类型不乐观,所以请耐心等待:
public static string AsString(this JObjectValue jsonValue, string defaultValue = "")
{
if (jsonValue != null)
return jsonValue.ToString();
else
return defaultValue;
}
public static T As<T>(this JObjectValue jsonValue, T defaultValue = default(T))
{
if (jsonValue != null)
return jsonValue.Value<T>();
else
return defaultValue;
}
使用:
var array = new ArrayList
{
inputJson["abc"].AsString(),
inputJson["def"].As<float>(),
inputJson["ghi"].As<float>(),
inputJson["jkl"].As(2.0f) //or with custom default values and type inference
};
这还有一个好处,即避免了两次点击索引器(一次用于检查null
,第二次用于转换值),并避免了重复如何解析/读取json输入。
你可以试试这个:
var array = new ArrayList
{
inputJson["abc"] ?? inputJson["abc"].ToString(),
...
};