Problem mit key/value

Hallo Team,

ich habe hier folgendes Feld:

meta_data

{"id":49814,"key":"_customer_number","value":"71207"}

Wenn ich jetzt die id haben wollte, würde ich schreiben:

${parseMap(meta_data!,":",",").at("id")}

Ich will aber die customer_number - wie kann ich das machen? Die ist ja in einer key-value-Struktur drin. Ich könnte die Map natürlich mit regex umformatieren und dann erst nach der customer_number durchsuchen, aber das geht doch sicher einfacher?


Gruß Micha

Hallo Micha,


die parseMap Funktion funktioniert nur für einfach Key=Value Werte (key1=value1;key2=value2) und nicht für JSON Werte. In dem Fall kannst du aber die parseJSON Funktion verwenden.


${parseJSON(meta_data).id}


![](upload://z8SJPoRaMFfUD7TxZcEe3MsCKnt.png)


Viele Grüße

Torsten



Ich will doch die _customer_number! Ergebnis muß also 71207 sein

Ich muß es noch präzisieren - natürlich würde Dein Code mit .... ).value} funktionieren. Aber eigentlich liegt der Gesamtstring so vor:


[{"id":49549,"key":"_wc_customer_order_xml_export_suite_is_exported","value":"0"},{"id":49550,"key":"_yoast_wpseo_profile_updated","value":"1592558778"},{"id":49568,"key":"shipping_method","value":"flat_rate:2"},{"id":49569,"key":"billing_title","value":"1"},{"id":49570,"key":"shipping_title","value":"1"},{"id":49571,"key":"wc_last_active","value":"1592956800"},{"id":49573,"key":"_customer_number","value":"71195"},{"id":49575,"key":"update_dt","value":"2020-06-24 12:01:36"}]


Wie bekomme ich hier am einfachsten die _customer_number raus, also die 71195?

Die Zahl steht im value:


${parseJSON(meta_data).value} 


Eventuell musst du vorher noch den auf den richtigen key prüfen:


<#if parseJSON(meta_data).key == "_customer_number">${parseJSON(meta_data).value}</#if>



Für den Gesamtstring


<#list parseJSON(result['meta_data']) as meta><#if meta.key == "_customer_number">${meta.value}</#if></#list>


Sehr geil! Ich wäre nie drauf gekommen, daß man das in eine list einlesen muß. Vielen Dank!