всем привет!
вопрос по freemarker схемам.
Пытаюсь смапить dto (json dto см. ниже)
{
"type": "SurveyButton",
"properties": {
"request-body": "event=1",
"url": "http://localhost:8080/done"
},
"fields": [
{
"id": "SurveyButton",
"type": "text",
"title": "Оцените операцию",
"style": "heart"
}
]
}
используя ftl шаблон
<#list widget as key, value>
"${key}":
<#if widget[value]?? >
<
@universalConverter widget[value]/>
<#else>
""
</#if>
<#sep>,</#sep>
</#list>
<#macro universalConverter data>
<#if data?is_boolean || data?is_number>
${data?c}
<#elseif data?is_string>
"${data!""?json_string}"
<#elseif data?is_sequence>
[
<#list data as x >
<#if !x?is_enumerable>
<
@universalConverter x/>
<#elseif !x?is_string>
"${data!""?json_string}"
</#if>
<#sep>,</#sep>
</#list>
]
<#elseif data?is_hash_ex>
{
<#list data as key, value>
"${key}": <#if data[key]?? ><
@universalConverter data[key]/><#else>""</#if>
<#sep>,</#sep>
</#list>
}
<#else>
${data}
</#if>
</#macro>
благополучно падает с ошибкой
"getClass":
FreeMarker template error (DEBUG mode; use RETHROW in production!):
For "...[...]" enclosed operand: Expected a number, range, or string, but this has evaluated to a method+sequence
(wrapper: f.e.b.SimpleMethodModel):
==> value [in template "screen.ftl" at line 6, column 17]