gpt4 book ai didi

hash - 在 freemarker 中为散列内部的散列分配 key

转载 作者:行者123 更新时间:2023-12-04 22:55:42 25 4
gpt4 key购买 nike

我想在 freemarker 中为现有模型制作一个新模型以使其易于使用。

我的模型是这样的:

[
{
"id": "1",
"type": "TYPE_1",
"code": "CODE_OF_TYPE_1"
},
{
"id": "2",
"type": "TYPE_1",
"code": "ANOTHER_CODE_OF_TYPE_1"
},
{
"id": "3",
"type": "TYPE_2",
"code": "CODE_OF_TYPE_2"
},
{
"id": "4",
"type": "TYPE_2",
"code": "ANOTHER_CODE_OF_TYPE_2"
}
]

我想把它做成这样:

 {
"TYPE_1": {
"CODE_OF_TYPE_1": "1",
"ANOTHER_CODE_OF_TYPE_1": "2"
},
"TYPE_2": {
"CODE_OF_TYPE_2": "3",
"ANOTHER_CODE_OF_TYPE_2": "4"
}
}

您可能知道,在 freemarker 中为散列分配键有点奇怪..

我所做的是这样的:

<#assign preferencesByCode = {} />

<#list preferences as preference>
<assign preferencesByCode = preferencesByCode + {preference.type : { preference.code: preference.id } } />
</#list>

但是这样做,它只保留最后一个 id,所以我只有一种类型..

然后我尝试了这个:

<#if !(preferencesByCode[preference.type])??>
<#assign preferencesByCode = preferencesByCode + {preference.type : { } } />
</#if>

<#assign subHash = preferencesByCode[preference.type] />
<#assign subHash = subHash + {preference.code : preference.id } />

但是 subHash 没有作为引用保存,所以任何东西都被分配给了类型..

有什么想法吗?

最佳答案

虽然我同意@ddekany 的评论,但这里有一个解决您问题的方法。

<#function filterList list type>
<#local result={}>
<#list list as preference>
<#if preference.type == type>
<#local result=result + {
preference.code: preference.id
}>
</#if>
</#list>
<#return result>
</#function>

<#function convertList list>
<#local result={}>
<#list list as preference>
<#if !result[preference.type]??>
<#local result=result + { preference.type: filterList(list, preference.type) }>
</#if>
</#list>
<#return result>
</#function>

<#assign transformedModel=convertList(model)>

关于hash - 在 freemarker 中为散列内部的散列分配 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29851591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com