aws api身体映射模板

时间:2016-10-21 01:58:18

标签: json amazon-web-services api-design aws-api-gateway

我正在尝试格式化我的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": []
    }
  ]
}

在我的小部分没有出来的格式化中我做错了什么?

1 个答案:

答案 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
    ]
}