我有这个Python应用程序:
import json
class MessageHandler():
def get_request_id(self, message):
request_id = None
message = json.dumps(message)
print("MESSAGE %s" % message)
if 'key' in message and 'payload' in message:
request_id = message['key']['request_id']
else:
request_id = message['request_id']
return request_id
def get_message(self, message):
message = json.dumps(message)
print("MESSAGE %s" % message)
if 'key' in message and 'payload' in message:
message = message['payload']
else:
message = message
return message
def main():
message = "{'payload': {u'event_type': u'Object:Delete', u'format': u'2.0', u'bucket_uuid': u'a352600c-17f8-401b-ab49-7df0ca9fc4ea', u'system_uuid': u'bd607bc3-4f60-77c4-0180-9dd4115ec942', u'object_length': u'22', u'object_name': u'init_put_test0', u'bucket_name': u'container-acb77190-a4ee-47e3-a78b-8bc7cb894a0c', u'request_id': u'e25e9589-6520-437e-83e1-e0d12bd67c16', u'request_time': u'2020-01-16T23:11:36.105Z'}, 'key': {u'notification_id': u'7e13cb05-488a-47d0-a433-7bwwd33605b8', u'request_id': u'ddo34589-6120-412e-83a1-d12d2bd67c16'}}"
message_handler = MessageHandler()
request_id = message_handler.get_request_id(message)
print("Request ID: %s" % request_id)
request_id = message_handler.get_message(message)
print("Message: %s" % request_id)
if __name__ == "__main__":
main()
当我运行它时,我得到这个:
Traceback (most recent call last):
File "/Users/me/PycharmProjects/Helper/message_handler.py", line 92, in <module>
main()
File "/Users/me/PycharmProjects/Helper/message_handler.py", line 81, in main
kafka_request_id = message_handler.get_request_id(kafka_message_2)
File "/Users/me/PycharmProjects/Helper/message_handler.py", line 10, in get_request_id
request_id = message['key']['request_id']
TypeError: string indices must be integers
MESSAGE "{'payload': {u'event_type': u'Object:Delete', u'format': u'2.0', u'bucket_uuid': u'a352600c-17f8-401b-ab49-7df0ca9fc4ea', u'system_uuid': u'bd607bc3-4f60-77c4-0180-9dd4115ec942', u'object_length': u'22', u'object_name': u'init_put_test0', u'bucket_name': u'container-acb77190-a4ee-47e3-a78b-8bc7cb894a0c', u'request_id': u'e25e9589-6520-437e-83e1-e0d12bd67c16', u'request_time': u'2020-01-16T23:11:36.105Z'}, 'key': {u'notification_id': u'7e13cb05-488a-47d0-a433-7bwwd33605b8', u'request_id': u'ddo34589-6120-412e-83a1-d12d2bd67c16'}}"
我怀疑我需要将message
转换为可以读取密钥的格式,但是我该怎么做?
json.dumps(message)将python对象转换为json字符串。您要做的是json.loads(message),此方法将字符串转换为python对象。