我正在尝试格式化我的aws api的输出,但无法获得对象中的一个列表。我在dynamodb中加载了数据,我的数据如下所示:
[
{
"lastname": "person1",
"firstname": "last2",
"employeeid": 7,
"hrs": [
{
"availhrs": "16",
"ttlhrs": "12",
"bllhrs": "14",
"rto": "16",
"ondeckhrs": "0",
"nonbllhrs": "0",
"employeeid": 78,
"dtmonth": "2016-01-01T00:00:00.000Z",
"clientid": 1,
"clientId": 1,
"employeeId": 78
},
{
"availhrs": "16",
"ttlhrs": "17",
"bllhrs": "15",
"rto": "26.5",
"ondeckhrs": "0",
"nonbllhrs": "0",
"employeeid": 78,
"dtmonth": "2016-02-01T00:00:00.000Z",
"clientid": 1,
"clientId": 1,
"employeeId": 78
}
]
}
]
我尝试将其格式化为:
#set($inputRoot = $input.path('$'))
{
"employees": [
#foreach($elem in $inputRoot.Items)
{
"employeeid": "$elem.employeeid.N",
"lastname": "$elem.lastname.S",
"firstname": "$elem.firstname.S",
"hrs": [
#foreach($elem in $inputRoot.Items.hrs)
{
"availhrs": "$elem.availhrs",
"ttlhrs": "$elem.ttlhrs",
"bllhrs": "$elem.bllhrs",
"rto": "$elem.rto",
"ondeckhrs": "$elem.ondeckhrs",
"nonbllhrs": "$elem.nonbllhrs",
"dtmonth": "$elem.dtmonth"
}#if($foreach.hasNext),#end
#end
]
}#if($foreach.hasNext).#end
#end
]
}
但是我的输出看起来像这样:
{
"employees": [
{
"employeeid": "7",
"lastname": "last2",
"firstname": "person1",
"hrs": []
}
]
}
在我的小部分没有出来的格式化中我做错了什么?
答案 0 :(得分:2)
你的内循环不正确。你应该在$ elem.hrs而不是$ inputRoot.Item.hrs
上进行迭代#set($inputRoot = $input.path('$'))
{
"employees": [
#foreach($elem in $inputRoot.Items)
{
"employeeid": "$elem.employeeid.N",
"lastname": "$elem.lastname.S",
"firstname": "$elem.firstname.S",
"hrs": [
#foreach($hour in $elem.hrs)
{
"availhrs": "$hour.availhrs",
"ttlhrs": "$hour.ttlhrs",
"bllhrs": "$hour.bllhrs",
"rto": "$hour.rto",
"ondeckhrs": "$hour.ondeckhrs",
"nonbllhrs": "$hour.nonbllhrs",
"dtmonth": "$hour.dtmonth"
}#if($foreach.hasNext),#end
#end
]
}#if($foreach.hasNext).#end
#end
]
}