我正在尝试从对象列表中返回一个对象;
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的业务程序,我需要它,并且想将对象分配回一个接受这种格式的变量。
答案 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>