如何检查JsonObject有空值(windows.data.json)

时间:2014-12-08 14:00:50

标签: c# windows-phone-8.1

如何检查来自json对象的任何键是否具有空值

  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"

4 个答案:

答案 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();