Python3.7环境下Lambda从DynamoDB getItem后转JSON问题求助
解决DynamoDB返回字符串转JSON的问题
嘿,别着急,这个问题其实是因为你还没完全摸透DynamoDB返回数据的结构,以及json.loads()和json.dumps()的正确用法~ 我给你一步步拆解明白:
首先,你从DynamoDB拿到的这个数据是它的原生格式,每个值都带着类型标识(比如"S"代表字符串类型)。你得先把那个被转义的JSON字符串从里面提取出来,再用json.loads()去解析——而不是直接对整个DynamoDB返回数据操作。
具体步骤和代码示例
import json # 你从DynamoDB获取到的原始数据 dynamodb_result = { "key": { "S": "{\"status\": 1,\n \"number\": 12}" } } # 第一步:提取出藏在"S"字段里的转义JSON字符串 target_str = dynamodb_result["key"]["S"] # 第二步:用json.loads()把字符串解析成Python字典(也就是你要的JSON格式对象) parsed_json = json.loads(target_str) # 看看结果:这就是你想要的结构化数据了 print(parsed_json) # 输出: {'status': 1, 'number': 12} # 如果之后需要把这个字典转回格式化的JSON字符串,再用json.dumps() formatted_json_str = json.dumps(parsed_json, indent=2) print(formatted_json_str) # 输出: # { # "status": 1, # "number": 12 # }
为什么你之前尝试没成功?
- 可能你直接对整个
dynamodb_result用了json.loads(),但它本身已经是Python字典了,根本不需要再解析; - 也可能搞混了
loads和dumps的作用:loads()是把JSON字符串转成Python对象,dumps()是把Python对象转成JSON字符串,顺序搞反肯定出问题哦~
下次遇到DynamoDB的返回数据,记得先根据类型标识(S字符串、N数字、L列表等)提取对应的值,再做后续处理就顺畅啦!
内容的提问来源于stack exchange,提问作者ABCD
相关产品推荐
相关产品推荐

