JsonObject itemObject = itemValue.GetObject();
string id = itemObject["id"].GetString() == null ? "" : itemObject["id"].GetString();
this is my code but app crashes on it if null value for key "id"
答案 0 :(得分:4)
IJsonValue idValue = itemObject.GetNamedValue("id");
if ( idValue.ValueType == JsonValueType.Null)
{
// is Null
}
else if (idValue.ValueType == JsonValueType.String)
{
string id = idValue.GetString();
}
如果执行此操作太多,请考虑添加extension methods。
做相反的用法:
IJsonValue value = JsonValue.CreateNullValue();
阅读here有关空值的更多信息。
答案 1 :(得分:0)
如果itemObject["id"]
为null,则方法null.GetString()
不存在,您将获得指定的错误(null对象永远不会有任何方法/字段/属性)。
string id = itemObject["id"] == null ? (string)null : itemObject["id"].GetString(); // (string)null is an alternative to "", both are valid null representations for a string, but you should use whichever is your preference consistently to avoid errors further down the line
以上内容避免在您断言ID不为空(check here for more in-depth)之前调用.GetString()
,如果您使用C#6,则应该能够使用{{3 }}:
string id = itemObject["id"]?.GetString();
答案 2 :(得分:0)
http://msdn.microsoft.com/en-us/library/ms173224.aspx
?? operator被称为null-coalescing运算符。如果操作数不为null,则返回左侧操作数;否则它会返回右手操作数。
答案 3 :(得分:0)
以下是问题的解决方案
string id = itemObject [" id"]。ValueType == JsonValueType.Null? "" :itemObject [" id"]。GetString();