Python Lambda函数解析DynamoDB的JSON格式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python Lambda函数解析DynamoDB的JSON格式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1708字,纯文字阅读大概需要3分钟。
内容图文
为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"
}
}
}
]
}
}
}
}`
解决方法:
更新:现在有一个图书馆:https://pypi.org/project/dynamodb-json/
这是indiangolfer’s answer的改进版本.
虽然indiangolfer的解决方案适用于这个问题,但这个改进的版本对于偶然发现这个线程的其他人来说可能更有用.
def unmarshal_dynamodb_json(node):
data = dict({})
data['M'] = node
return _unmarshal_value(data)
def _unmarshal_value(node):
if type(node) is not dict:
return node
for key, value in node.items():
# S – String - return string
# N – Number - return int or float (if includes '.')
# B – Binary - not handled
# BOOL – Boolean - return Bool
# NULL – Null - return None
# M – Map - return a dict
# L – List - return a list
# SS – String Set - not handled
# NN – Number Set - not handled
# BB – Binary Set - not handled
key = key.lower()
if key == 'bool':
return value
if key == 'null':
return None
if key == 's':
return value
if key == 'n':
if '.' in str(value):
return float(value)
return int(value)
if key in ['m', 'l']:
if key == 'm':
data = {}
for key1, value1 in value.items():
if key1.lower() == 'l':
data = [_unmarshal_value(n) for n in value1]
else:
if type(value1) is not dict:
return _unmarshal_value(value)
data[key1] = _unmarshal_value(value1)
return data
data = []
for item in value:
data.append(_unmarshal_value(item))
return data
它通过以下方式得到改进:
>处理更多data types,包括以前未正确处理的列表
>处理小写和大写键
编辑:修复递归对象错误
内容总结
以上是互联网集市为您收集整理的Python Lambda函数解析DynamoDB的JSON格式全部内容,希望文章能够帮你解决Python Lambda函数解析DynamoDB的JSON格式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。