我有一个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的建议之后,我在print(type(posted_data))
后面插入了posted_data = json.loads(event["body"])
,发现post_data实际上是一个字符串。
我期望json.loads(event["body"])
将json对象转换为python对象。如何获取对象中的值?