matthiasforberg
Occasional Collector

toJSON in Beanshell?

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

0 Kudos
4 Replies
Windmüller
Crownpeak employee

Hallo Matthias,

 

die Methode toJSON ist nicht Teil der stabilen Access-API und sollte daher nicht in BeanShell-Scripts verwendet werden.

 

Grüße

 Stephan

0 Kudos
matthiasforberg
Occasional Collector

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

0 Kudos
Windmüller
Crownpeak employee

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.

0 Kudos
ChKo
Elite Observer

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

0 Kudos