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结构,以提高模板的可读性和可维护性。
{
"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很多函数的定义都有点反人类了。不过对于最常用的逻辑:循环和判断,我觉得...