0

我有像以下的數組:Freemarker的:找到在對象的陣列的一個結果

<#assign services = [ 
{'id': '1', 'name': 'AAAA'}, 
{'id': '22', 'name': 'BBBB'} 
]> 

我知道ID ..示例。我需要的是這樣的:

${services[2].name} // print BBBB 

我想這,但沒有結果

${services[services.type?seq_index_of(22)].name} 

有沒有辦法做到這一點?

謝謝大家幫忙

回答

1

如果可以的話,通過服務模式的地圖,而不是陣列。否則,您可以遍歷服務以找到合適的服務。如果您需要多次使用它,那麼你可以抽象邏輯到這樣一個宏:

<#macro getServiceName id serviceList> 
    <#list serviceList as service> 
     <#if service['id']==id> 
      ${service['name']} 
      <#break/> 
     </#if> 
    </#list> 
</#macro> 

<#assign services = [ 
    {'id': '1', 'name': 'AAAA'}, 
    {'id': '22', 'name': 'BBBB'} 
]> 


<#assign serviceId="22"/> 
service ${serviceId} name = <@getServiceName id=serviceId serviceList=services/> 
+0

謝謝...宏是個好主意,我喜歡它......我在freemarker中 – daremachine

0

您可以在services陣列上循環。

<#assign services = [ 
{'id': '1', 'name': 'AAAA'}, 
{'id': '2', 'name': 'BBBB'}, 
{'id': '22', 'name': 'CCCC'}, 
{'id': '23', 'name': 'DDDD'} 
]> 

<#list services as service> 
    <#if service.id == '22'> 
     Result: ${service.name} 
    </#if> 
</#list> 
+0

一個小白謝謝你的幫助,但這種解決方案我現在有,但我問我是否可以做的更好 – daremachine

相關問題