FTL - 如何正确获取JSON对象的值

时间:2016-03-21 09:56:14

标签: json freemarker

我是FTL的新手,所以这可能是一个愚蠢的问题,但我没有幸运能解决它。

我有一个JSON对象:

 {
    "Q1": "KOŽENÝ VOLANT",
    "Q5": "ZESÍLENÉ ZÁVĚSY KOL",
    "Q6": "AIRBAG SPOLUJEZDCE",
    "M3": "BOČNÍ OCHR - LIŠ MALÉ",
    "Q7": "SERVOŘÍZENÍ ELEKTR",
    "M4": "SP"
 }

我需要在右侧访问此文本。 我是怎么做的:

<#function getModelOptions>
    <#local results = []>
        <#list case.vehicleData.modelOptions?keys as key>
            <#local results = results+[case.vehicleData.modelOptions[key]]>
        </#list>
    <#return results>
</#function>

之后的事情就像:

<#assign dataVybavaVozidla = getModelOptions() >
<@input.draw2ColumnNoBorderTable nadpis="Výbava vozidla" data=dataVybavaVozidla />

对于90%的情况,这适用于我,但在某些情况下它只是给我一个错误:

> ---- FTL stack trace ("~" means nesting-related):
>         - Failed at: #local results = results + [case.vehi...  [in template "path/to/template.ftl" in function "getModelOptions" at line
> 1501, column 25]
>         - Reached through: #assign dataVybavaVozidla = getModelO...  [in template "path/to/template.ftl" at line 674, column 17]
> ----

我尝试比较两种情况下的数据,当它工作时和不能正常工作时。两者看起来一样。我也试着

<#list case.vehicleData.modelOptions?keys as key>
    <tr>${key}</tr>
</#list>

正确显示我的键:(

编辑: Atm看起来(我无法确认)是它可以是文字中的&null等特殊字符。

1 个答案:

答案 0 :(得分:1)

如果您的数据可以包含空值,则添加空检查:

<#if case.vehicleData.modelOptions[key]??>
    <#local results = results+[case.vehicleData.modelOptions[key]]>
</#if>