【问题标题】:Parse lambda event json to object using python使用 python 将 lambda 事件 json 解析为对象
【发布时间】:2019-07-05 23:45:35
【问题描述】:

如果出现 lambda,我会为 dynamo db 中的任何更新获取新旧图像。现在,在我的新图像中,有一个属性名称作为 sourceDetails,它可能会有所不同,例如。(请注意下面提到的字符串是 json

{'M': {'bucketName': {'S': 'postote-offers-bucket'}}}

或者就像例如。

 {'M': {'streamName': {'S': 'someStream'},{'limit': {'N': 10}}}

我怎样才能以最好的方式解析这个结果

【问题讨论】:

  • 解析是什么意思?你想达到什么目标?到目前为止,您尝试过什么?
  • 我有一个新旧图像来自 dynamo db 更改相关的 lambda 事件。比如 newImage=json.loads(json.dumps(event['Records'][0]['dynamodb' ]['NewImage'])) 。这给了我事件修改的新图像。现在如果我必须得到 bucket_name=newImage['InputSourceDetails']['M']['bucketName']['S'] 我必须做这样的事情。有没有更好的方法来实现同样的目标。

标签: json python-3.x aws-lambda


【解决方案1】:

您可以使用jmespath 库。它已经存在于 Lambda 的 python 环境中,因为它是 boto3 的一个依赖。

path = 'Records[0].dynamodb.NewImage.InputSourceDetails.M.bucketName.S'
bucket_name = jmespath.search(path, event)

如果路径下没有值,jmespath.search函数将返回None

顺便说一句,您不必这样做json.loads + json.dumps(如问题下方的评论中所述),event 已经是一个 python 字典。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多