C# c-检查集合初始值设定项中的null
我使用Json.NET解析Json文档,并使用集合初始值设定项创建ArrayList,如下所示C# c-检查集合初始值设定项中的null,c#,json.net,C#,Json.net,我使用Json.NET解析Json文档,并使用集合初始值设定项创建ArrayList,如下所示 var array = new ArrayList { inputJson["abc"].ToString(), inputJson["def"].Value<float>(), inputJson["ghi"].Value<float>()
var array = new ArrayList
{
inputJson["abc"].ToString(),
inputJson["def"].Value<float>(),
inputJson["ghi"].Value<float>()
};
现在,我想添加一个空检查,以便在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
};
像这样的东西就行了
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
};
您可以尝试以下方法:
var array = new ArrayList
{
inputJson["abc"] ?? inputJson["abc"].ToString(),
...
};
您可以尝试以下方法:
var array = new ArrayList
{
inputJson["abc"] ?? inputJson["abc"].ToString(),
...
};
我将创建扩展方法来处理这个问题。请注意,我对这里的类型不是很肯定,所以请耐心听我说:
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输入的方式。我将创建扩展方法来处理此问题。请注意,我对这里的类型不是很肯定,所以请耐心听我说:
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输入的方式。谢谢!这在将来也是有益的。谢谢!这在未来也将是有益的。