【问题标题】:C# Newtonsoft - Value cannot be nullC# Newtonsoft - 值不能为空
【发布时间】:2017-06-04 20:54:00
【问题描述】:

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

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

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

这仍然会在此代码的第二行中引发“值不能为空”错误 - 我是否应该做一些不同的事情来处理 JSON 中不存在该元素的情况?

【问题讨论】:

    标签: c# json


    【解决方案1】:

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

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

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

    【讨论】:

    • @reviloSlater 很高兴我的回答对您有所帮助。如果您的问题得到解决,请将其标记为已选择的答案。
    【解决方案2】:

    如果有人想知道,VB.Net 版本会这样写:

    If token.SelectToken("scriptVersion") Is Nothing
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-28
      • 2019-09-27
      相关资源
      最近更新 更多