В следующем сегменте я хочу получить второе свойство в пределах всех records
в этом файле JSON.Если я заменю [1]
в jObjects.SelectTokens("records[*].[1]")
на .Name
, я получу правильный вывод, но он ограничивается только именем.
If response.IsSuccessStatusCode Then
Try
Dim jObjects As JObject = JObject.Parse(jsonString)
For Each tk As JToken In jObjects.SelectTokens("records[*].[1]")
jsonList.Add(tk)
Next
For Each strng As String In jsonList
txtQueryOutput.AppendText(strng + vbCrLf)
Next
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End If
Приложение принимает запросы в форме SOQL, а затем я беру ответ и анализирую его.Поэтому, если я запрашиваю SELECT name FROM contact
, я получаю следующее:
"totalSize" : 21,
"done" : true,
"records" : [ {
"attributes" : {
"type" : "Contact",
"url" : "/services/data/v36.0/sobjects/Contact/0031U00000GtLxDQAV"
},
"Name" : "Jack Rogers"
}, {
"attributes" : {
"type" : "Contact",
"url" : "/services/data/v36.0/sobjects/Contact/0031U00000GlhHTQAZ"
},
"Name" : "Rose Gonzalez"
},
Затем я могу запросить SELECT phone FROM contact
и получить то же самое, за исключением Name
, в ответе JSON будет Phone
.Есть ли способ сделать то, что я пытаюсь сделать, используя индекс [1]
, чтобы получить все вторые записи в каждом объекте?
UPDATE # 1
Чтобы уточнить, я хочу получить каждое значение свойства после массива attributes
в объекте records
.Поэтому, если я запрашиваю Name, Phone, Email
, то мне нужны все эти значения свойств, но не значения массива атрибутов.Вот пример того, что я пытаюсь / хочу сделать, хотя это не работает и вылетает в массиве атрибутов:
Dim data As List(Of JToken) = jObjects.Children().ToList
For Each item As JProperty In data
item.CreateReader()
Select Case item.Name
Case "records"
For Each subItem As JProperty In item
Select Case subItem.Name
Case "attributes"
'skip
Case Else
txtQueryOutput.AppendText(subItem.Value)
End Select
Next
End Select
Next
По сути, я хочу пропустить массив атрибутов и просто получитькаждое значение после него.