C#Newtonsoft - 值不能为空

时间:2017-01-20 00:09:47

标签: c# json

我试图修复我已经制作的WinForms程序中的错误;我正在解析JSON字符串,然后将一些结果放入各种变量中。

有时,JSON的特定元素不存在(出于真正的原因),所以我尝试使用以下代码处理它:

        int scriptVersion;
        if ((int)token.SelectToken("scriptVersion") == null)
        {
            scriptVersion = 0;
        }
        else
        {
            scriptVersion = (int)token.SelectToken("scriptVersion");
        }

这仍然会引发一个' Value不能为null'这段代码第二行中的错误 - 我应该做一些不同的事情来处理JSON中不存在该元素的情况吗?

2 个答案:

答案 0 :(得分:6)

您正在将JToken转换为value type的int。值类型不能为空。

JToken.SelectToken方法返回一个JToken对象,它是一个引用类型,因此可以为null。删除演员,它应该工作。

if (token.SelectToken("scriptVersion") == null)

答案 1 :(得分:0)

万一有人想知道,VB.Net版本将显示为:

If token.SelectToken("scriptVersion") Is Nothing

以前给出的答案对我很有帮助!