STrojette
Returning Observer

Map.toJSON und Probleme mit Hochkomma

Jump to solution

Hallo zusammen!

Wir haben brand-aktuell das Problem, dass die Methode map.toJSON keine Hochkomma escaped und uns dadurch das generierte Json um die Ohren fliegt.

Hat jemand eine Idee woran das liegen kann oder wie wir das programmatisch verhindern können?

Wir sind für jede Hilfe dankbar.

1 Solution

Accepted Solutions

Ok also ein "'" als Zeichen, in der Tat, das Zeichen wird nicht escaped, auch bei mir nicht.

Das ist dann ein Fall für den e-Spirit Support.

View solution in original post

12 Replies
sense
Elite Observer

Kannst Du mal ein Beispiel posten wo es fehlschlägt + FS Version?

STrojette
Returning Observer

Hey Sven, danke für die schnelle Antwort.

FS 5.2.1908

Unser Code (Auszug):

--$$CMS_SET(array,[])$$--

...

--$$CMS_SET(pictureMap,{:})$$--

--$$CMS_SET(set_picture)$$--
     --
$$CMS_REF(media: "ph1110x833")$$--
--
$$CMS_END_SET$$--
--
$$CMS_SET(set_picture_thumbnail)$$--
     --
$$CMS_REF(media: "ph1110x833")$$--
--
$$CMS_END_SET$$--
--
$$CMS_SET(void,pictureMap.put("href", set_picture.toString))$$--
--
$$CMS_SET(void,pictureMap.put("thumbnailHref", set_picture_thumbnail.toString))$$--
--
$$CMS_SET(void,pictureMap.put("alt", entry.item.lt_picture_alt))$$--

--$$CMS_SET(void,pictureMap.put("text", entry.item.lt_picture_caption))$$--

--$$CMS_SET(void,array.add(pictureMap.toJSON))$$--

...

--$$CMS_TRIM(level:3)$$--

     --$<div class="modalGallery maxwidth" images='$CMS_VALUE(array)$' $CMS_VALUE(editorId())$></div>$--

--$$CMS_END_TRIM$

Wenn wir uns dann das DIV im Browser anschauen, sehen wir das das ARRAY im images attribute am ersten Hochkomma gebrochen wird.

Eigentlich sollte sowas doch aber von der Map.toJSON Methode abgefangen werden?

0 Kudos

Ich habe das mal bei mir nachgebaut und nur die einzelnen Codeteile angepasst, aber die Funktionalität ist die Gleiche, hier erstmal der FS Code von mir als Vergleich:

$CMS_SET(array, [])$

$CMS_SET(pictureMap, {:})$

$CMS_SET(set_picture)$$CMS_REF(media: "picture_039")$$CMS_END_SET$

$CMS_SET(set_picture_thumbnail)$$CMS_REF(media: "picture_039")$$CMS_END_SET$

$CMS_SET(void,pictureMap.put("href", set_picture.toString))$

$CMS_SET(void,pictureMap.put("thumbnailHref", set_picture_thumbnail.toString))$

$CMS_SET(void,pictureMap.put("alt", "Lorem ipsum"))$

$CMS_SET(void,pictureMap.put("text", "Lorem ipsum"))$

$CMS_SET(void, array.add(pictureMap.toJSON))$

$CMS_TRIM(level:3)$

<div class="modalGallery maxwidth" images='$CMS_VALUE(array)$'></div>

$CMS_END_TRIM$

und das ergibt bei mir folgenden Ausgabe:

<div class="modalGallery maxwidth" images='[{"alt":"Lorem ipsum","href":"/fs5preview/preview/127588/media/DE/current/127836/ORIGINAL/picture_039.jpg","text":"Lorem ipsum","thumbnailHref":"/fs5preview/preview/127588/media/DE/current/127836/ORIGINAL/picture_039.jpg"}]'></div>

Hier nochmal das reine JSON, als formatierte Version

[

   {

      "alt":"Lorem ipsum",
      "href":"/fs5preview/preview/127588/media/DE/current/127836/ORIGINAL/picture_039.jpg",
      "text":"Lorem ipsum",
      "thumbnailHref":"/fs5preview/preview/127588/media/DE/current/127836/ORIGINAL/picture_039.jpg"

   }

]

0 Kudos
STrojette
Returning Observer

Sind denn irgendwo im Text oder der URL Hochkomma eingebaut?

0 Kudos

Achso ... im Text, also ein DOM-Text z.B.?

Teste ich grad mal ... warte Smiley Wink

0 Kudos

Hab jetzt 2 Eingabekomponenten hinzugefügt

320007_pastedImage_0.png

Ausgabe der beiden über

$CMS_SET(void,pictureMap.put("alt", st_headline))$

$CMS_SET(void,pictureMap.put("text", st_text.normalize.toText(true)))$

dabei kommt dann folgendes JSON bei rum, ich mach mal nen Screenshot

320008_pastedImage_1.png

0 Kudos
STrojette
Returning Observer

Wir haben Hochkomma im text, im alt, und im FileName des Bildes (welches ja für die URL Generierung genutzt wird - AdvancedUrlCreator)

0 Kudos

Das sind Gänsefüßchen, aber keine Hochkomma. Smiley Sad

--> ' <--
Also halbe Gänsefüßchen. Quasi ein einzelner Gänsefuß Smiley Wink

0 Kudos

Ok also ein "'" als Zeichen, in der Tat, das Zeichen wird nicht escaped, auch bei mir nicht.

Das ist dann ein Fall für den e-Spirit Support.