如何从Freemarker中的对象列表中获取对象

时间:2019-04-03 11:34:29

标签: json freemarker

我正在尝试从对象列表中返回一个对象;

list = [{"name":"Joe","id":1},{"name":"Fred","id":2}]

我要完全按照以下格式输出对象;

{"name":"Joe","id":1}

当我想完整地访问对象时,它将引发错误;

${list?first} -> Error: Expected a string or something automatically...

https://try.freemarker.apache.org/上对此进行测试,但是我似乎无法提取完整的第一个对象,而从该对象访问属性可以正常工作。

我知道,显示这样的对象有点奇怪。对于使用freemarker的业务程序,我需要它,并且想将对象分配回一个接受这种格式的变量。

1 个答案:

答案 0 :(得分:1)

您可以显示可以转换为String的值,作为错误建议(如下)

<#assign item = list[0]>
${item.name} ${item.id} 
For "${...}" content: Expected a string or something automatically convertible to 
string (number, date or boolean), or "template output" , but this has evaluated to a 
sequence (ArrayList wrapped into f.t.DefaultListAdapter):
==> list  [in nameless template at line 1, column 3]

您可以检查freemarker parse a JSON的答案,其执行方式类似于:

<#assign array = '[{"name":"Joe","id":1},{"name":"Fred","id":2}]'> 
<#assign object = array?eval[0]> 
<#list object?keys as key>"${key}":"${object[key]}"
</#list>