使用JSON负载的Python-字符串索引必须是整数

使用JSON负载的Python-字符串索引必须是整数,python,json,lambda,Python,Json,Lambda,您好,我在反序列化lambda中的json时遇到了一些问题,从在线查看来看,问题似乎是我有一个字符串,并试图像获取dict一样获取键值,但仍然不确定正确的解决方案 下面是给出错误的代码 def handler(event, context): try: json_str = json.dumps(event) request_json = json.loads(json_str) req = request_json['body']

您好,我在反序列化lambda中的json时遇到了一些问题,从在线查看来看,问题似乎是我有一个字符串,并试图像获取dict一样获取键值,但仍然不确定正确的解决方案

下面是给出错误的代码

def handler(event, context):

    try:
        json_str = json.dumps(event)
        request_json = json.loads(json_str)
        req = request_json['body']
        logger.info("req : " + str(req))
        if req:
            key = req['executionArn']
这一行给出了问题-

key = req['executionArn']
记录器线路给了我这个

req : {"executionArn":"123"}  
我通过api网关在lambda上执行post请求,将其用作有效负载

{"executionArn":"123"}

您有一个
事件
变量,通过
转储将其转换为字符串
,然后通过
加载
将其转换回JSON,然后尝试访问该JSON的属性。对吗

除了双重转换之外,
request_json['body']
是一个字符串,如果您知道它是json,您可以像以前一样加载它:


req=json.loads(request_json['body'])

非常有效,谢谢!因此,我实际上可以保留转储并在开始时加载,因为它已经是json了?如果您知道它已经是json(实际上是一个字典),那么是的,您可以访问
event['body']
,但我不知道您进入
event
的内容,所以我不能确定。