C# 如何检查JsonObject是否有空值(windows.data.json) 如何检查json对象中的任何键是否具有空值

C# 如何检查JsonObject是否有空值(windows.data.json) 如何检查json对象中的任何键是否具有空值,c#,windows-phone-8.1,C#,Windows Phone 8.1,如果itemObject[“id”]为null,则方法null.GetString()不存在,您将得到指定的错误(null对象从不具有任何方法/字段/属性) 上述方法避免调用.GetString(),直到您断言ID不是null(),如果您使用的是C#6,那么您应该能够使用: 如果itemObject[“id”]为null,则方法null.GetString()不存在,您将得到指定的错误(null对象从不具有任何方法/字段/属性) 上述方法避免调用.GetString(),直到您断言ID不是nul

如果
itemObject[“id”]
为null,则方法
null.GetString()
不存在,您将得到指定的错误(null对象从不具有任何方法/字段/属性)

上述方法避免调用
.GetString()
,直到您断言ID不是null(),如果您使用的是C#6,那么您应该能够使用:

如果
itemObject[“id”]
为null,则方法
null.GetString()
不存在,您将得到指定的错误(null对象从不具有任何方法/字段/属性)

上述方法避免调用
.GetString()
,直到您断言ID不是null(),如果您使用的是C#6,那么您应该能够使用:

这个??运算符称为空合并运算符。如果操作数不为空,则返回左侧操作数;否则它将返回右侧操作数。

IJsonValue idValue = itemObject.GetNamedValue("id");

if ( idValue.ValueType == JsonValueType.Null)
{
    // is Null
}
else if (idValue.ValueType == JsonValueType.String)
{
    string id = idValue.GetString();
}
这个??运算符称为空合并运算符。如果操作数不为空,则返回左侧操作数;否则,它将返回右侧操作数

IJsonValue idValue = itemObject.GetNamedValue("id");

if ( idValue.ValueType == JsonValueType.Null)
{
    // is Null
}
else if (idValue.ValueType == JsonValueType.String)
{
    string id = idValue.GetString();
}

如果你做得太多,考虑添加.< /P> 要执行相反的操作,请使用:

IJsonValue value = JsonValue.CreateNullValue();
阅读有关空值的更多信息

如果你做得太多,考虑添加.< /P> 要执行相反的操作,请使用:

IJsonValue value = JsonValue.CreateNullValue();

阅读有关空值的更多信息。

以下是该问题的解决方案


字符串id=itemObject[“id”]。ValueType==JsonValueType.Null?“”:itemObject[“id”].GetString()

以下是问题的解决方案


字符串id=itemObject[“id”]。ValueType==JsonValueType.Null?“”:itemObject[“id”].GetString()

您是否尝试过
itemObject[“id”]==null
?您提到的两种方法我都尝试过,但都不起作用您是否尝试过
itemObject[“id”]==null
?我已经尝试了您提到的两种方法,但没有工作。null合并运算符的两侧必须是同一类型的,所以我认为OP需要这样编写代码<代码>字符串id=(itemObject[“id”]??Guid.Empty).GetString()尝试字符串id=(itemObject[“id”].GetString()??“”);null合并运算符的两侧必须是相同的类型,所以我认为OP需要编写这样的代码<代码>字符串id=(itemObject[“id”]??Guid.Empty).GetString()尝试字符串id=(itemObject[“id”].GetString()??“”);我的运气不好。。我没有刷新页面,在我以同样的方式解决问题后看到了你的答案。我的运气不好。。我没有刷新页面,在我以同样的方式解决问题后看到了您的答案。1)在[“id”]之后使用null condional运算符没有意义,因为JsonObject的索引器从不返回null。尽管如果JSON中没有这样的属性,它会抛出KeyNotFoundException。2) (字符串)null不是字符串的null表示形式。Null为Null,而“”不是Null-它是一个长度为零的字符串。1)KeyNotFoundException是足够的理由。2) (字符串)null编译。好的,所以我不能在注释中按enter键。。如果省略(字符串)强制转换,则从(2)中收到的例外情况与C#如何取消装箱变量有关。简言之,这是因为null是无类型的,编译器将抛出一个抖动这是一个技术术语FYIThere没有装箱或拆箱,string总是一个引用类型,所以它不需要装箱。(2)中不会抛出异常,而是编译错误。此外,在C#6.0中,不需要在三元运算符(?:)中强制转换null,编译器足够聪明,可以自动推断结果类型。1)在[“id”]之后使用null condional运算符没有意义,因为JsonObject的索引器从不返回null。尽管如果JSON中没有这样的属性,它会抛出KeyNotFoundException。2) (字符串)null不是字符串的null表示形式。Null为Null,而“”不是Null-它是一个长度为零的字符串。1)KeyNotFoundException是足够的理由。2) (字符串)null编译。好的,所以我不能在注释中按enter键。。如果省略(字符串)强制转换,则从(2)中收到的例外情况与C#如何取消装箱变量有关。简言之,这是因为null是无类型的,编译器将抛出一个抖动这是一个技术术语FYIThere没有装箱或拆箱,string总是一个引用类型,所以它不需要装箱。(2)中不会抛出异常,而是编译错误。此外,在C#6.0中,不需要在三元运算符(?:)中强制转换null,编译器足够聪明,可以自动推断结果类型。
IJsonValue value = JsonValue.CreateNullValue();