速度循环通过JSON

时间:2017-02-15 17:15:48

标签: velocity marketo

我正在使用Velocity尝试循环遍历Marketo中某个字段中的一些JSON数据。我已经使用the tutorial here将JSON更改为Velocity Map,但是尝试遍历现在是地图的数据时会遇到问题。

#set( $items = ${abandonedBasket_cList} )

###if( $items.get(7).basketJSON.isEmpty() )
###set( $items.get(7).basketJSON = '[]' )
###end

#foreach ($item in $items)
    #if( $foreach.last )
        #set( $lastitem = $item.basketJSON )
    #end 
#end

#set( $ClientReferrals = '#set( $ClientReferrals = ' + $lastitem + ' ) ' )
#evaluate( $ClientReferrals )


${ClientReferrals[0].itemDesc}       ## outputs "Season Pass Holders"
<br>
${ClientReferrals[1].customerID}     ## outputs "jill@example2.com"
<br>

在使用特定静态索引时,我已经从“map”管理了输出值,如示例所示。

我坚持的一点是试图让它使用Velocity中的foreach工具遍历每个对象,因为我不知道如何在循环中迭代[index]键。

更新

我尝试使用建议的代码,但没有显示。

#foreach($key in $ClientReferrals.keySet())
   #set($item = $ClientReferrals[$key])
   $item.itemDesc
   ${item.itemDesc}
   $item
   ${item}
#end

如果我输出$ ClientReferrals的样子,这就是我得到的。这看起来像是一个Hashmap吗?

[{id=29071940, itemDesc=1.33ct AA Tanzanite 9K Gold Earrings, itemImage=https://cdn.gemporia.com/images/products/300/NJPS19.jpg, itemQuantity=1, itemPrice=£151.00, customerID=1132399, basketURL=https://secure.gemporia.com/basket.aspx, isAuction=false, stock=10, dateAdded=2017-02-15}, {id=29071946, itemDesc=Size J to K AA Tanzanite & White Zircon 9K Gold Ring ATGW 1.08cts, itemImage=https://cdn.gemporia.com/images/products/300/OZVJ80.5.jpg, itemQuantity=1, itemPrice=£89.99, customerID=1132399, basketURL=https://secure.gemporia.com/basket.aspx, isAuction=true, stock=1, dateAdded=2017-02-15}] 

1 个答案:

答案 0 :(得分:2)

如果$ClientReferrals是地图,那么您可以执行以下操作:

#foreach($key in $ClientReferrals.keySet())
   #set($item = $ClientReferrals[$key])
   ...
#end

项目不会按HashMap的键排序,它们将用于TreeMap。

顺便说一句,要获取数组的最后一项,您可以执行以下操作:

#set($last_index = $items.size() - 1)
#set($last = $items[$last_index])