检查给定数组索引是否存在json密钥?

时间:2016-02-24 20:23:07

标签: c# json

如果密钥不存在,此代码将引发异常。

例如,如果键存在于数组索引中的位置,则代码是可以的,即使值为null。但是,如果密钥不存在,代码将抛出异常。 select token括号中的代码是动态的(字符串变量)。

r["Value"] = json.SelectToken($.Objectives[x].state).ToString() ?? ""; 

3 个答案:

答案 0 :(得分:0)

如果x不存在,您可以使用tenary运算符返回默认值

r["Value"] = $.Objectives[x] ? 
    json.SelectToken($.Objectives[x].state).ToString() ?? " 
    : '';

OR

r["Value"] = x >= $.Objectives.Length ? 
    json.SelectToken($.Objectives[x].state).ToString() ?? " 
    : '';

我不确定你为什么以双引号结束这一行。也许是一个错字?但我没有解决它,代码是你开始的。

答案 1 :(得分:0)

您无法在空值上调用ToString()。

JToken value = json.SelectToken("$.Objectives[x].state");
r["Value"] = (value != null) ? value.ToString() : "";

答案 2 :(得分:0)

在javascript中,如果给定变量有值,则会将true返回到以下内容:

if(r["Value"]){
   //this only runs if r["Value"] exists
}