【发布时间】:2020-01-12 05:29:04
【问题描述】:
我需要重现一个 json,基本上是对我的代码运行一些测试,这些测试用于实时解析类似的 json。
这是我的代码 sn-p,事件是从 s3 PUT 通知生成的,即从 SNS 侦听器发布到 SQS -
event_body = json.loads(event["Records"][0]["body"])
event_body_msg = json.loads(event_body['Message'])
event_body_dict = event_body_msg['Records'][0]
s3_buck = event_body_dict['s3']['bucket']['name']
我希望我的 json 包含将由此代码解析的层次结构(因为我的测试是在 s3_buck 的值上编写的)。这是我想出的 json -
{ “记录”: [ { "messageId": "a6665910-ab5a-46c3-baaf-6086c0c90511", “receiptHandle”: “+ AQEBscBCR7DwSLqd5SXvEAX 8NUImpMPNmJ9hSD03HgWHhPnNZoIIqHkqI8lvwGMLjhX2R1ogPfo09z8EHcI7Nuh851vi4cIPBngMbIS6yw / rBtG115vSUyfN8i1yKM6Oz7iSJ2kIJCGmWRF2Rhsc8dH31zcyZKbVz / SzCOK8S / E9SdFHkPi2iNm4tr4PgrI + ZrvtYUicOuZQAJ8 ++ hYo0rB43YCZKSZWMV1LG4iz2 + OKVO08qZv3WyJ3pUegW4LXNp1xAf2abep44lYgWqqDWyWRlnpKayagqaTSaqR / OzNM3Iky9MnXqVz3g7CRBO28h2noUy4T6cW6HmlZ + xe3TWHOToJeWqiRnsY1HYuZxGscRpDUXIq5V7pZPhkLU2XbdQg”, "body": "{\"Message\": {\"Records\": [{\"s3\": {\"bucket\": {\"name\": \"demo-bucket-name\" ,\"arn\": \"arn:aws:s3:::demo-bucket-name\"},\"object\": {\"key\": \"demo-key-prefix.json\"}}}]}}" } ] }
我正在尝试复制 aws sns 通知以创建仅包含我的用例属性的示例 json。这是 sns 产生的示例事件(从 lambda 控制台复制)-https://www.heypasteit.com/clip/0IUAE3。我只选择我需要的属性,例如 s3 bucket_name 或 arn 等。
但是,这里的问题是我在运行 event["Records"][0]["body"] 时遇到错误,并带有错误消息 -
Traceback(最近一次调用最后一次):文件“”,第 1 行,in 文件 "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/init.py", 第 354 行,在负载中 返回 _default_decoder.decode(s) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py”, 第 342 行,在解码中 raise JSONDecodeError("Extra data", s, end) json.decoder.JSONDecodeError: Extra data: line 1 column 251 (char 250)
我尝试使用 r""" 将 json 字符串包含在 "body" 键中,但没有成功。想知道创建 json 的正确格式是什么。
【问题讨论】:
标签: json python-3.x amazon-web-services