In einem Spreadsheet Mapper möchte ich auf Daten einer Shopify Bestellung zugreifen, welche als Key-Value Liste im shopifyGetOrder Step importiert werden.
Es handelt sich hier um das Attribut "note_attributes", welches im JSON der Shopify API eine Key-Value Liste ist:
"note_attributes": [ { "name": "has_unpaid_orders", "value": "" }, { "name": "sum_unpaid_orders", "value": "" }, { "name": "unpaid_orders_limit_exceeded", "value": "" }, { "name": "shipping_address_salutation", "value": "" }, { "name": "shipping_address_title", "value": "" }, { "name": "billing_address_salutation", "value": "" }, { "name": "billing_address_title", "value": "" }, { "name": "gp_nummer", "value": "0" }, { "name": "invoice_number", "value": "123456789" }, { "name": "sepa_owner", "value": "" }, { "name": "sepa_iban", "value": "" }, { "name": "sepa_bic", "value": "" } ]
Durch den Import Step wird diese Liste wie folgt im Datastore gespeichert:
has_unpaid_orders=,sum_unpaid_orders=,unpaid_orders_limit_exceeded=,shipping_address_salutation=,shipping_address_title=,billing_address_salutation=,billing_address_title=,gp_nummer=0,invoice_number=123456789,sepa_owner=,sepa_iban=,sepa_bic=
Im Spreadsheet greife ich wie folgt auf die Liste zu:
<#assign noteattributes = ("[" + master['note_attributes'] + "]")?eval > <#list noteattributes as attribute> <#if attribute.name == "billing_address_salutation"> <#if attribute.value?lower_case == "mr">Herr <#elseif attribute.value?lower_case == "mrs">Frau <#elseif attribute.value?lower_case == "company">Firma <#elseif attribute.value?lower_case == "school">Schule <#elseif attribute.value?lower_case == "pubfacility">Öffentliche Einrichtung <#elseif attribute.value?lower_case == "other">Sonstige <#else>${attribute.value!}</#if> </#if> </#list> </#if>
Diese Verarbeitung funktioniert auch, aber nur, wenn jedes Key-Value-Paar auch einen Wert hat, sobald ein leerer Wert vorkommt, erhalte ich folgende Fehlermeldung:
error in function Scripting: (Root Causes: _MiscTemplateException: Failed to "?eval" string with this error: ---begin-message--- Syntax error in ?eval-ed string in line 1, column 21: Encountered ","(...)..., but was expecting one of: <STRING_LITERAL> <RAW_STRING> "false" "true" <INTEGER> <DECIMAL> "." "+" "-" "!" "[" "(" "{" <ID> ---end-message--- The failing expression: ==> ("[" + master['note_attributes'] + "]")?eval [in template "Col rech_anrede" at line 12, column 27] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign noteattributes = ("[" + maste... [in template "Col rech_anrede" at line 12, column 1] ----)
Wie kann ich diese Fehlermeldung umgehen, bzw. welche Alternativen zu "eval" gäbe es?