【发布时间】:2022-06-16 18:10:32
【问题描述】:
我正在 AWS 上编写一个 Lambda Python 函数。它检索 DynamoDB 项目,我想以 JSON 格式将其返回给调用者。如果我不序列化该项目,则 Python 的 json.dump 函数存在错误。
from boto3.dynamodb.types import TypeDeserializer, TypeSerializer
def serialize(dynamo_obj: dict) -> dict:
serializer = TypeSerializer()
return {
k: serializer.serialize(v)
for k, v in dynamo_obj.items()
}
table = dynamodb.Table(os.getenv('STORAGE_NAME'))
response = table.get_item(Key={'id': some_id})
item = response.get('Item', None)
if item:
return {
'statusCode': 200,
'headers': { 'Content-Type': 'application/json' },
'body': json.dumps(serialize(item))
}
但是,当我以这种方式序列化时,返回的项目包含一些奇怪的额外键(一些 'N' 和 'S' 键,它们没有出现在 dynamodb 表中)。
使 dynamodb 项目与 JSON 格式兼容以便返回给调用者的正确方法是什么?
【问题讨论】:
标签: python-3.x amazon-web-services boto3