检查SelectTokens json查询的空结果

时间:2019-10-17 22:10:38

标签: vb.net json.net

我想检查SelectTokens查询的结果是否为空或为null,当(构造错误的)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 Nothing以及其他几种变体都失败了。

编辑: 我已经尝试过.count

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

返回:“找不到类型为'd__4'的公共成员'Count'。”

1 个答案:

答案 0 :(得分:1)

您的代码:

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
相关问题