使用 Python 对 DynamoDB 流进行序列化和反序列化 |类型解串器没有帮助

问题描述 投票:0回答:1

感谢您对我和社区的所有帮助和支持。

尝试在互联网上抛出SO和几篇文章,并找出要反序列化dynamoDB Item,一旦可以使用TypeDeserializer并且它的工作轻而易举(它处理数据类型,但不是通用的k,v对)

但是是否有一个标准库,可以使用它来反序列化 ddb 流事件?包括新图片

      {
     "eventID":"1",
     "eventName":"INSERT",
     "eventVersion":"1.0",
     "eventSource":"aws:dynamodb",
     "awsRegion":"us-east-1",
     "dynamodb":{
        "Keys":{
           "Id":{
              "N":"101"
           }
        },
        "NewImage":{
           "Message":{
              "S":"New item!"
           },
           "Id":{
              "N":"101"
           }
        },
        "SequenceNumber":"111",
        "SizeBytes":26,
        "StreamViewType":"NEW_AND_OLD_IMAGES"
     },
     "eventSourceARN":"stream-ARN"
  }
python-3.x json-deserialization amazon-dynamodb-streams
1个回答
0
投票

我使用了在另一个问题中找到的代码片段。效果很好。

from boto3.dynamodb.types import TypeDeserializer

serializer = TypeDeserializer()

def deserialize(data):
    if isinstance(data, list):
        return [deserialize(v) for v in data]

    if isinstance(data, dict):
        try:
            return serializer.deserialize(data)
        except TypeError:
            return {k: deserialize(v) for k, v in data.items()}
    else:
        return data

反序列化您的请求:

{
  "eventID": "1",
  "eventName": "INSERT",
  "eventVersion": "1.0",
  "eventSource": "aws:dynamodb",
  "awsRegion": "us-east-1",
  "dynamodb": {
    "Keys": {
      "Id": "101"
    },
    "NewImage": {
      "Message": "New item!",
      "Id": "101"
    },
    "SequenceNumber": "111",
    "SizeBytes": 26,
    "StreamViewType": "NEW_AND_OLD_IMAGES"
  },
  "eventSourceARN": "stream-ARN"
}
© www.soinside.com 2019 - 2024. All rights reserved.