Проверить пустой результат запроса SelectTokens json - PullRequest
0 голосов
/ 18 октября 2019

Я хотел бы проверить пустой или нулевой результат запроса SelectTokens, он возвращается пустым, если в (плохо построенном) json нет RunnerNo;работает совершенно иначе.

  Dim readingJson = Newtonsoft.Json.Linq.JObject.Parse(JsonString)
  Dim aRunnerInfos = New List(Of Linq.JToken)

  aRunnerInfos = readingJson.SelectTokens("$.runners[?(@.RunnerNo == " & H.Item("No").ToString & ")]", True)

Я пытался: если aRunnerInfos ничего, и несколько других вариантов, но все не удается.

РЕДАКТИРОВАТЬ: я пытался .count

 If aRunnerInfos.Count() = 0 Then
                            Stop  
    End If

возвращает: «Открытый элемент« Count »для типа« d__4 »не найден».

1 Ответ

1 голос
/ 18 октября 2019

Ваш код:

Dim readingJson = Newtonsoft.Json.Linq.JObject.Parse(JsonString)
Dim aRunnerInfos = New List(Of Linq.JToken)

aRunnerInfos = readingJson.SelectTokens("$.runners[?(@.RunnerNo == " & H.Item("No").ToString & ")]", True)

Обновленный код:

Dim readingJson = Newtonsoft.Json.Linq.JObject.Parse(JsonString)
Dim aRunnerInfos as IEnumerable(Of Linq.JToken)

aRunnerInfos = readingJson.SelectTokens("$.runners[?(@.RunnerNo == " & H.Item("No").ToString & ")]", True)

If aRunnerInfos.Count = 0 Then
    'Do stuff
Else
    'Do other stuff
End If

Альтернатива:

Dim readingJson = Newtonsoft.Json.Linq.JObject.Parse(JsonString)
Dim aRunnerInfos as Linq.JToken

aRunnerInfos = readingJson.SelectTokens("$.runners[?(@.RunnerNo == " & H.Item("No").ToString & ")]", True)

If aRunnerInfos Is Nothing Then
    'Do stuff
Else
    'Do other stuff
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...