#python-3.x #watson-discovery
#python-3.x #watson-discovery
Вопрос:
Использование ibm-watson
Python SDK версии 5.3.0 со следующим примером кода:
from ibm_watson import DiscoveryV2, ApiException
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
import json
url = 'https://api.eu-de.discovery.watson.cloud.ibm.com'
version = '2020-08-30'
apikey = '...'
project = '...'
collection = '...'
authenticator = IAMAuthenticator(apikey)
discovery = DiscoveryV2(version=version, authenticator=authenticator)
discovery.set_service_url(url)
try:
result = discovery.query(
project_id=project,
collection_ids=collection,
query='text:searchterm',
table_results=True
).get_result()
print(json.dumps(result, indent=2))
except ApiException as ex:
print(f'Failed. Status code {ex.code}: {ex.message}')
Возвращает следующую ошибку с сервера.
Сбой. Код состояния 400: не удалось перевести JSON в запросе: не удается десериализовать значение типа `scala.collection.immutable.Список <java.lang.Строка>` из строкового значения (токен `JsonToken.VALUE_STRING`)
Ошибка возникает только в том случае, если collections_ids
table_results
указан or .
Ответ №1:
Сервер сообщает вам, что отправленный ему JSON не соответствует тому, что он ожидает обработать.
collections_ids
И table_results
неправильно отформатированы для запроса API.
Согласно документации API.
collections_ids
должен быть список. Поэтому измените наcollections_ids=[collections]
table_results
ожидает объект. Для правильного использованияtable_results={ 'enabled': True }