就像问题asked here
我使用AWS API Gateway上的dynamoDB代理服务在dynamoDB上执行查询或扫描操作,以读取客户端数据,并得到DynamoDB格式的JSON数据作为回复。
尽管我可以使用“方法响应”进行转换,但是当数据超过1000条记录时,由于方法响应中foreach循环的限制,我无法处理它。
在dynamodb或api网关中的某处是否存在标志或设置,以便获得正常的json而不是dynamoDB格式的JSON?
DynamoDB格式的JSON示例
{
"videos": [
{
"file": {
"S": "file1.mp4"
},
"id": {
"S": "1"
},
"canvas": {
"S": "This is Canvas1"
}
},
{
"file": {
"S": "main.mp4"
},
"id": {
"S": "0"
},
"canvas": {
"S": "this is a canvas"
}
}
]
}
相同的普通Json示例
{
"videos": [
{
"file": "file1.mp4",
"id": "1",
"canvas": "This is Canvas1"
},
{
"file": main.mp4",
"id": "0",
"canvas": "this is a canvas"
}
]
}
答案 0 :(得分:0)
对此的可能解决方案是使用aws lambda查询/扫描dynamoDb,并在使用某些json库(例如GSON或jackson)将其转换为json后,将域对象回复给他人。
如果有人知道其他选择,请在此处发布。谢谢
答案 1 :(得分:0)
使用Integration Response映射器!
映射器可能类似于:(我使用的是您提供的回复)
#set($inputRoot = $input.path('$'))
{
"videos": [
#foreach($elem in $inputRoot.Items)
{ "file": "$elem.file.S",
"id": "$elem.id.S",
"canvas": "$elem.canvas.S" }#if($foreach.hasNext), #end
#end
]
}
请参阅链接的文档,以获取有关将AWS Services直接附加到API Gateway的更多完整指南。