Я создал чат-бота, который принимает «place» в качестве входных данных и подключается к внешней службе API, передавая «place» в качестве параметра. Служба API возвращает список всех доступных сведений об аэропорте для данного места в виде объекта JSON.
Например, если в качестве входных данных в диалоге задано «Берлин», API возвращает следующий объект JSON, который затем сохраняется в контекстной переменной $ TheResult,
Контекстная переменная $ TheResult содержит следующий объект JSON в качестве значения при вводе 'Berlin',
{
"message": {
"Places": [
{
"CityId": "BERL-sky",
"CountryId": "DE-sky",
"CountryName": "Germany",
"PlaceId": "BERL-sky",
"PlaceName": "Berlin",
"RegionId": ""
},
{
"CityId": "BERL-sky",
"CountryId": "DE-sky",
"CountryName": "Germany",
"PlaceId": "TXL-sky",
"PlaceName": "Berlin Tegel",
"RegionId": ""
},
{
"CityId": "BERL-sky",
"CountryId": "DE-sky",
"CountryName": "Germany",
"PlaceId": "SXF-sky",
"PlaceName": "Berlin Schoenefeld",
"RegionId": ""
},
{
"CityId": "BTVA-sky",
"CountryId": "US-sky",
"CountryName": "United States",
"PlaceId": "BTV-sky",
"PlaceName": "Burlington",
"RegionId": "VT"
},
{
"CityId": "BLIA-sky",
"CountryId": "US-sky",
"CountryName": "United States",
"PlaceId": "BLI-sky",
"PlaceName": "Bellingham",
"RegionId": "WA"
},
{
"CityId": "BRLA-sky",
"CountryId": "US-sky",
"CountryName": "United States",
"PlaceId": "BRL-sky",
"PlaceName": "Burlington",
"RegionId": "IA"
}
]
},
"parameters": {
"context": "",
"message": "",
"service": "https://skyscanner-skyscanner-flight-search-v1.p.rapidapi.com/apiservices/autosuggest/v1.0/FI/EUR/en-US/?query=Berlin"
}
}
Когда я использую текст ответа как Response from external server: $TheResult.message.Places
, он генерирует следующий вывод:
Ответ от внешнего сервера:
[{ "CityId": "BERL-небо", "CountryId": "DE-небо", "CountryName": "Германия", "PlaceId": "BERL-небо", "топоним": "Берлин", "RegionId ":" "}, {" CityId ":" BERL-небо " "CountryId": "DE-небо", "CountryName": "Германия", "PlaceId": "TXL-небо", "топоним":" Берлин
Тегель», "RegionId": ""}, { "CityId": "BERL-небо", "CountryId": "DE-небо", "CountryName": "Германия", "PlaceId": "SXF-небо", «топоним»: "Берлин
Шенефельд " "RegionId": ""}, { "CityId": "BTVA-небо", "CountryId": "США-небо", "CountryName":" United
Государства», "PlaceId": "БТВ-небо", "топоним": "Burlington", "RegionId": "VT"}, { "CityId": "BLIA-небо", "CountryId": "США-небо" "CountryName": "United
Государства», "PlaceId": "BLI-небо", "топоним": "Беллингхемы", "RegionId": "WA"}, { "CityId": "BRLA-небо", "CountryId": "США-небо" "CountryName": "United
Государства», "PlaceId": "BRL-небо", "топоним": "Burlington", "RegionId": "IA"}]
Мне нужно получить доступ к первому «CityId» из объекта JSON и отобразить его в качестве выходных данных, в случае Берлина в качестве входных данных ожидаемый результат будет
Первый идентификатор города аэропорта: BERL-sky
Я попробовал ответный текст, The first airport city id is: $TheResult.message.Places.CityId
выдает следующую ошибку узла диалога
Ошибка при обновлении вывода с выводом диалога
идентификатор узла [узел_1_1551877430730]. Выход узла
[{"generic": [{"values": [{"text": "Ответ от внешнего сервера:
$ TheResult.message.Places.CityId "}]," response_type ":" Текст», "selection_policy": "последовательный"}]}]
Ошибка оценки SpEL: выражение [$ TheResult.message.Places.CityId]
преобразуется в [context ['TheResult']. message.Places.CityId] в
позиция 37: EL1008E: свойство или поле 'CityId' не может быть найдено на
объект типа 'JsonArray' - может быть, не публичный?
и текст ответа The first airport city id is: $TheResult.message.Places[0].CityId
также не работали. Он не генерировал никаких ошибок, но отображает тот же вывод, что и выше, только добавляя дополнительный [0] .CityId в конце.
Первый идентификатор города аэропорта:
[{ "CityId": "BERL-небо", "CountryId": "DE-небо", "CountryName": "Германия", "PlaceId": "BERL-небо", "топоним": "Берлин", "RegionId ":" "}, {" CityId ":" BERL-небо " "CountryId": "DE-небо", "CountryName": "Германия", "PlaceId": "TXL-небо", "топоним":" Берлин
Тегель», "RegionId": ""}, { "CityId": "BERL-небо", "CountryId": "DE-небо", "CountryName": "Германия", "PlaceId": "SXF-небо", «топоним»: "Берлин
Шенефельд " "RegionId": ""}, { "CityId": "BTVA-небо", "CountryId": "США-небо", "CountryName":" United
Государства», "PlaceId": "БТВ-небо", "топоним": "Burlington", "RegionId": "VT"}, { "CityId": "BLIA-небо", "CountryId": "США-небо" "CountryName": "United
Государства», "PlaceId": "BLI-небо", "топоним": "Беллингхемы", "RegionId": "WA"}, { "CityId": "BRLA-небо", "CountryId": "США-небо" "CountryName": "United
Государства», "PlaceId": "BRL-небо", "топоним": "Burlington", "RegionId": "IA"}] [0] .CityId
Как мне проанализировать этот объект JSON для доступа к отдельным парам ключ-значение?
Заранее спасибо, я могу доработать вопрос при необходимости !!