Search the FirstSpirit Knowledge Base
Hallo,
in Templates gibt es ja die praktische Methode .toJSON, mit der man eine Map in ein Json Objekt umwandeln kann.
Jetzt bräuchte ich genau dies auch in einem Beanshell Skript, weil ich aus einer HashMap am Ende einen String mit einem validen Json erzeugen muss, also mit den richtigen Trennern und escapten Anführungszeichen. Wenn ich direkt HashMap.toString() mache, wird all das entfernt und ich bekomme kein richtiges Json.
Anschaulich, mit HashMap.toString() bekomme ich sowas:
"{hreflang={de-DE=/Inhalt/Testseite/Testseite-3.html, en-US=/Content/Test-Page/Test-Page-3.html}}"
Ich brauche aber dies:
"{\"hreflang\":{\"de-DE\":\"/Inhalt/Testseite/Testseite-3.html\",\"en-US\":\"/Content/Test-Page/Test-Page-3.html\"}}"
Kann ich das "toJSON", das innerhalb von $CMS_VALUE(...)$ etc. verwendet werden kann, auch irgendwie in der Beanshell benutzen?
Ich habe gesehen, dass es auch andere Möglichkeiten in Java gibt, eine Map in Json umzuwandeln, z.B. mit org.json.JSONObject, aber das steht mir offenbar in der SaaS Plattform nicht zur Verfügung. Zumindest findet er das Package bei mir nicht...
Viele Grüße
Matthias
Hallo Matthias,
die Methode toJSON ist nicht Teil der stabilen Access-API und sollte daher nicht in BeanShell-Scripts verwendet werden.
Grüße
Stephan
Hallo Stephan,
vielen Dank, ich habe inzwischen was anderes gefunden, nämlich de.espirit.common.json.JsonObject. Das wird zwar auch nicht in der öffentlichen API Doku gelistet, aber die IDE hat es mir per Autovervollständigung vorgeschlagen, also kann es ja nicht ganz verkehrt sein. Damit kann ich genau das machen, was ich brauche.
Grüße
Matthias
Bitte auch diese Klasse nicht nutzen! Sie ist nicht Teil der offiziellen API und daher mit @ApiStatus.Internal markiert. Zumindest IntelliJ IDEA wird bei der Verwendung eine Warnung anzeigen. So annotierte Klassen können jederzeit und ohne Vorwarnung geändert werden oder ganz verschwinden, was bei einem Server-Update zu Problemen führen wird.
Hi,
Trick 17 wäre die Verwendung des RenderingAgent. Damit könntest du auch mit einer Stable-FS-API auf das .JSON zugreifen.
Gruß,
Christopher