使用 Python 将 Numpy 数组发送到 Hangouts Chat API 的 webhook?



我在Google Hangouts Chat的聊天室中设置了一个网络钩子。

我可以成功运行他们的示例代码,该代码从与聊天中的 webhook 关联的机器人生成一条消息:

from httplib2 import Http
from json import dumps
#
# Hangouts Chat incoming webhook quickstart
#
def main():
url = '<INCOMING-WEBHOOK-URL>'
bot_message = {
'text' : 'Hello World!'}
message_headers = { 'Content-Type': 'application/json; charset=UTF-8'}
http_obj = Http()
response = http_obj.request(
uri=url,
method='POST',
headers=message_headers,
body=dumps(bot_message),
)
print(response)
if __name__ == '__main__':
main()

但是当我尝试发送带有代码的 Numpy 数组时:

bot_message = {
'text' : NumpyArrayObject}

我收到错误:

TypeError: Object of type 'ndarray' is not JSON serializable

使用Python列表,我得到了错误:

"description": "Invalid JSON payload received. Unknown name \"text\" at 'message': Proto field is not repeating, cannot start list."n          }n        ]n      }n    ]n  }n}n')

我该怎么办?

错误的原因是NumPy数组是一个对象,大概具有各种结构/二进制/元数据,并且不能直接序列化(转换为字节流(可以保存为 JSON 格式。为此,您需要首先使用类似ndarray.tolist().请参阅此SO答案以了解详细信息。

最新更新