У меня проблемы с выбором точного синтаксиса для правильного запроса моего ответа JSON.
Моя конечная точка API возвращает примерно JSON следующим образом:
{
"status": "Succeeded",
"recognitionResults": [
{
"page": 1,
"clockwiseOrientation": 0.14,
"width": 2835,
"height": 2241,
"unit": "pixel",
"lines": [
{
"boundingBox": [
25,
11,
324,
15,
323,
51,
24,
46
],
"text": "Custom Report",
"words": [
{
"boundingBox": [
37,
11,
171,
14,
172,
49,
38,
48
],
"text": "Custom"
},
{
"boundingBox": [
193,
15,
322,
17,
323,
49,
194,
49
],
"text": "Report"
}
]
}...
Важно отметить, что элемент root будет содержать только массив 1 recognitionResults
. Внутри этого массива он будет содержать множество массивов lines
. Внутри каждой строки у меня есть свойство text
, у меня также будет свойство words
, которое также содержит свойство text
. Меня интересует только свойство text
, которое является прямым потомком lines
.
Я пытаюсь выделить все свойства text
в список строк.
vb. net код:
File.WriteAllText(Path.GetFileName(strFilePath) & ".json", JToken.Parse(strResult).ToString())
Dim c1 As JArray = CType(tmpObj("recognitionResults"), JArray)
Dim c2 = (From s In c1.Children() Select s("text")).ToList()
Это исключение, что JArray
имеет неверный ключ; ожидается int.
Я также подумал, что мог бы просто запросить его с помощью LINQ напрямую:
Dim c3 = (From s In tmpObj Select s("text")).ToList()
Это вызывает исключение, что он не может получить доступ к дочернему значению Newtonsoft.Json.Linq.Jproperty
Наконец, Я также попробовал это:
Dim c2 = (From p In tmpObj("recognitionResults")("lines").Children() Select p("text"))
Я действительно застрял в этой точке. Я думаю, у меня просто есть проблема с синтаксисом в том, как я пытаюсь выбрать. Может ли кто-нибудь указать мне правильное направление?