freemarker 怎么迭代json数据?

供稿:hz-xin.com     日期:2025-01-14
在使用Freemarker迭代JSON数据时,首先需要将JSON字符串转换为Map或List对象。假设我们有一个包含用户信息的JSON字符串,如下所示:

{

"res":"0",

"msg":"OK",

"count":"3",

"pagenum":"1",

"pagesize":"1",

"totalpage":"1",

"userlist":[

{"id":"1","name":"aa","sex":"男","age":"22"},

{"id":"2","name":"bb","sex":"男","age":"21"},

{"id":"3","name":"cc","sex":"女","age":"20"}

]

}

接着,可以使用Freemarker的标签将JSON字符串转换为Map对象,具体如下:

<#assign text> {"res":"0","msg":"OK","count":"3","pagenum":"1","pagesize":"1","totalpage":"1","userlist":[{"id":"1","name":"aa","sex":"男","age":"22"},{"id":"2","name":"bb","sex":"男","age":"21"},{"id":"3","name":"cc","sex":"女","age":"20"}]}

<#assign json=text?eval />

通过标签,我们可以遍历json.userlist中的每个元素,输出用户信息。例如:

<#list json.userlist as item>

id:${item.id}, name:${item.name},sex:${item.sex}

</#list>

这样,就能得到以下输出:

id:1, name:aa,sex:男

id:2, name:bb,sex:男

id:3, name:cc,sex:女

需要注意的是,如果JSON数据较为复杂,可能需要使用标签自定义函数来处理特定的JSON结构,以提高模板的可读性和可维护性。

freemarker 和的 beetl 比较,哪些有所欠缺吗
看了一下beetl的介绍,低侵入性有点名不副实,还有模板语法里直接print的,这样侵入性明显增加了啊。自定义标签真心吹毛求疵了,至少使用Java的IDE,freemarker的标签都不会造成什么障碍。使用js语法,这个挺好的,freemarker很多函数的定义都有点反人类了。不过对于最常用的逻辑:循环和判断,我觉得...

freemarker 和的 beetl 比较,哪些有所欠缺吗
看了一下beetl的介绍,低侵入性有点名不副实,还有模板语法里直接print的,这样侵入性明显增加了啊。自定义标签真心吹毛求疵了,至少使用Java的IDE,freemarker的标签都不会造成什么障碍。使用js语法,这个挺好的,freemarker很多函数的定义都有点反人类了。不过对于最常用的逻辑:循环和判断,我觉得...