2017-01-20 5 views
1

Я пытаюсь исправить ошибку в программе WinForms, которую я создал; Я разбираю строку JSON, а затем помещаю некоторые результаты в различные переменные.C# Newtonsoft - значение не может быть нулевым

Иногда, что конкретный элемент JSON не существует (для истинных причин), поэтому я пытался справиться с этим с помощью следующего кода:

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

Это еще кидает «Значение не может быть пустым 'ошибка во второй строке этого кода - должен ли я делать что-то другое, чтобы обрабатывать случаи, когда элемент отсутствует в JSON?

ответ

6

Вы бросаете JToken в int, который является value type. Типы значений не могут быть нулевыми.

Метод JToken.SelectToken возвращает объект JToken, который является ссылочным типом и, следовательно, может быть нулевым. Удалите бросок, и он должен работать.

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

Он делает - большое спасибо! – reviloSlater

+0

@reviloSlater Я рад, что мой ответ был полезен для вас. Пожалуйста, отметьте его как выбранный ответ, если проблема была решена. – m1o2