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

How to get an object from a list of object in 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 的业务程序,我想将该对象分配回接受此格式的变量。

您可以将可转换为字符串的值显示为错误(下方)建议

<#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>