gpt4 book ai didi

amazon-web-services - 使用 Velocity 模板语言创建 JSON 对象

转载 作者:行者123 更新时间:2023-12-04 12:41:27 25 4
gpt4 key购买 nike

我正在 AWS AppSync 中使用 Apache Velocity 模板语言 (VTL)。
在我的请求模板中,我查询了具有不同元素的未定义数量的项目。
我想在响应模板中做的是将结果转换为一个 JSON 对象,我稍后需要在我的 BatchDeleteItem 操作中使用它。
这是我目前解决的方法:

#set($deleteObject='{"Id" : { "S": "nodelete" },"Sk" : { "S": "nodelete" }}')
#set($replaceDeleteObject ="")
#set($separator="")

#foreach( $item in $ctx.result.items )
#set($replaceDeleteObject = $replaceDeleteObject + $separator + '{"Id" : { "S": "' + $item.Id + '" },"Sk" : { "S": "' + $item.Sk + '" }}')
#set($separator = ",")
#set($deleteObject = $replaceDeleteObject)
#end

$util.qr($ctx.stash.put("deleteObject", $deleteObject))

稍后我可以访问我的 deleteObject 并且它可以正常工作。

然而我的问题是 ,是否可以在 vtl 中直接创建某种 JSON 对象,我可以在其中附加我的值而不是以 JSON 对象的形式创建此字符串?

最佳答案

您可以从 AppSync Batch docs 中遵循此示例:

#set($ids = [])
#foreach($id in ${ctx.args.ids})
#set($map = {})
$util.qr($map.put("id", $util.dynamodb.toString($id)))
$util.qr($ids.add($map))
#end

{
"version" : "2018-05-29",
"operation" : "BatchGetItem",
"tables" : {
"Posts": {
"keys": $util.toJson($ids),
"consistentRead": true
}
}
}

所以对于你的情况,它应该是这样的:
#set ($batchDeleteArray = [])
#foreach( $item in $ctx.result.items )
#set ($entry = {
"Id": $util.dynamodb.toString($item.Id),
"Sk": $util.dynamodb.toString($item.Sk)
})

$util.qr($batchDeleteArray.add($entry))
#end

{
"version" : "2018-05-29",
"operation" : "BatchDeleteItem",
"tables" : {
"TableName": {
"keys": $util.toJson($batchDeleteArray)
}
}
}

关于amazon-web-services - 使用 Velocity 模板语言创建 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55138540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com