使用python3.7解析json对象时出错,无法访问键值

2024-04-24 17:07:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python lambda函数,它接收发布的数据。函数看起来有点像:

import json
import ....


def handle(event, context):

    if event["body"]:
        posted_data = json.loads(event["body"])
        print(posted_data)
        print(posted_data["email"])
        print(posted_data.get("email"))

print(posted_data)打印我的json对象,如下所示:

{
    "tel": "078723646",
    "message": "jsd fljxdisfbv lskdjnildufv nlksjfg",
    "email": "my@selg.om"
}

print(posted_data["email"])给了我这个错误:
[ERROR] TypeError: string indices must be integers

print(posted_data.get("email")给出了这个错误:
[ERROR] AttributeError: 'str' object has no attribute 'get'

但是,当我打开控制台时,运行python,并执行以下操作:

>>> obj = {"tel": "078276353", "message": "uisdjy df jdslfj lsdjf fb", "email": "tetet@gdgdg.lo"}
>>> type(obj)

我得到的答复是: <class 'dict'> 所以,我有点搞不清是字典还是字符串

我需要做的是访问对象中的每个值。
我试过this,但效果是逆转了json.loads
我也看了看here,但那没有帮助。我查了this,但似乎和我的案子无关

在@brunns的建议之后,我在posted_data = json.loads(event["body"])之后插入了print(type(posted_data)),并发现发布的数据实际上是一个字符串

我希望json.loads(event["body"])将json对象转换为python对象。如何检索对象中的值


Tags: 数据对象函数importeventjsonmessagedata