2016-10-21 16 views
0

aws apiから出力をフォーマットしようとしていますが、オブジェクトのリストの1つを取得できません。 I DynamoDBの中にロードされたデータを持っているし、私のデータは次のようになります。aws apiボディマッピングテンプレート

[ 
    { 
    "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": [] 
    } 
    ] 
} 

私のhrsの部分が出てこない場所を定式化するのに間違っているのは何ですか?

+0

ここにモデルを掲載できますか? –

答えて

2

内部ループが正しくありません。 $ inputRoot.Item.hrsの代わりに$ elem.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 
    ] 
} 
+0

だから私は 'hrs'オブジェクトを元に戻しますが、詳細はすべて空白です。' { "employees":[ { "employeeid": "78"、 "last2" 、 "FIRSTNAME": "PERSON1"、 "時間":[ { "availhrs": ""、 "ttlhrs": ""、 "bllhrs": ""、 "RTO": ""、 "ondeckhrs": ""、 "nonbllhrs": ""、 "dtmonth": "" } ] } ] } ' – user2061886

+0

OK、その場合には、あなたあなたがemployeeidとlastnameのように数字のために$ ..availhrs.S(または.N)のような.Sまたは.Nを追加する必要があります。 –

+0

ok ...そうしようとしましたが、まだ運がありません.... '$ elem.hrs'を' $ elem.hrs.L'に変更して、hrsに正しい数のオブジェクトを戻しましたが、hrsの内容は空白ですか? – user2061886

関連する問題