为dynamodb流调用的Python Lambda函数具有具有DynamoDB格式的JSON(包含JSON中的数据类型)。我想将DynamoDB JSON转换为标准JSON。PHP和nodejs具有Marshaler可以做到这一点。请让我知道Python是否有类似或其他选项。
DynamoDB_format = `{"feas":
{"M": {
"fea": {
"L": [
{
"M": {
"pre": {
"N": "1"
},
"Li": {
"N": "1"
},
"Fa": {
"N": "0"
},
"Mo": {
"N": "1"
},
"Ti": {
"S": "20160618184156529"
},
"Fr": {
"N": "4088682"
}
}
}
]
}
}
}
}`
字符串
6条答案
按热度按时间zc0qhyus1#
更新:现在有一个库:https://pypi.org/project/dynamodb-json/
下面是indiangolfer's answer的一个改进版本。虽然@indiangolfer的解决方案可以解决这个问题,但这个改进版本可能对偶然发现这个帖子的人更有用。
字符串
它在以下方面得到了改进:
编辑:修复递归对象错误
wpx232ag2#
我在野外找不到任何东西。所以,我决定将dynamodb json的PHP实现移植到here发布的标准json。我在处理DynamoDB流的python lambda函数中测试了这一点。如果有更好的方法,请告诉我。
(PS:这不是PHP Marshaler的完整端口)
问题中的JSON被转换为:
个字符
nkkqxpd93#
为了轻松地转换DynamoDB JSON,我建议使用boto3 dynamodb类型序列化器和序列化器。
字符串
更多详情check out the boto3.dynamodb.types classes .
o2gm4chl4#
根据this blog,以下似乎是最简单的解决方案:
字符串
vm0i2vca5#
这对我很有效。对@vekerdyb的回答做了小修改
字符串
i86rm4rw6#
import json import boto3 import base64
输出= []
def lambda_handler(event,context):print(event)for record in event 'records']:payload = base64.b64decode(record 'data']).decode('utf-8')print('payload:',payload)
字符串