2016-03-21 13 views
0

Ich bin ziemlich neu in FTL, also kann dies eine dumme Frage sein, aber ich hatte nicht Glück, es zu lösen.FTL - Wie bekomme ich Werte von JSON-Objekt richtig?

Ich habe ein JSON-Objekt:

{ 
    "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" 
} 

Und ich brauche diese Texte auf der rechten Seite zuzugreifen. Wie ich es tun:

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

und danach so etwas wie:

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

Diese auf 90% der Fälle funktioniert für mich, aber es werfen mir nur einen Fehler in einigen:

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

Ich versuche, Daten in beiden Fällen zu vergleichen, wenn es funktioniert und wenn es nicht richtig funktioniert. Beide sehen gleich aus. Ich versuche auch nur

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

, die mich richtig meine Schlüssel angezeigt :(

EDIT: Atm es sieht aus wie (ich kann nicht bestätigen) ist, dass es einige Sonderzeichen wie & sein kann und null . in Text

+0

kannst du nicht einfach 'case.vehicleData.modelO verwenden ptions? Werte'? – ddekany

+0

Der Anfang der angegebenen Fehlermeldungen fehlt. Sie können den Schlüssel auch ausdrucken, wenn der Fehler auftritt, indem Sie '<#attempt> ... <#recover> ...' verwenden, damit Sie nicht raten müssen. Anyway, FreeMarker interessiert sich nicht für '&' im Schlüssel. Es ist sicherlich ein "Null" irgendwo. – ddekany

Antwort

1

Wenn Ihre Daten Nullwerte enthalten können, fügen Sie dann ein null-Check:

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

Hallo rostanek, Sie haben Recht, es Array von JSON-Objekt zu erstellen, aber jeder dieser haben einen bestimmten Wert. Dein Ergebnis wird nur einen Schlüssel zurückgeben, den ich bereits habe – Andurit

+0

Hi, du hast geschrieben, dass du "Texte auf der linken Seite" brauchst, also habe ich angenommen, dass du die Schlüssel willst. Wenn Ihre Daten einen Nullwert enthalten können, sollten Sie einen Null-Check hinzufügen, da FreeMarker fehlschlägt, wenn es auf Null trifft. – rostanek

+0

Hey, tut mir leid, du bist gerade jetzt sehe ich es :) bearbeitet – Andurit

Verwandte Themen