.. include:: ../../Includes.txt .. _JsonHelper: ============================================== JsonHelper ============================================== \\nn\\t3::JsonHelper() ---------------------------------------------- Das Script hilft beim Konvertieren und Parsen von JavaScript-Objekt-Strings in ein Array. .. code-block:: php $data = \Nng\Nnhelpers\Helpers\JsonHelper::decode( "{title:'Test', cat:[2,3,4]}" ); print_r($data); Der Helper ermöglicht es, im TypoScript die JavaScript-Object-Schreibweise zu nutzen und über den ``{nnt3:parse.json()}`` ViewHelper in ein Array zu konvertieren. Das ist praktisch, wenn z.B. Slider-Konfigurationen oder andere JavaScript-Objekte im TypoScript definiert werden sollen, um sie später in JavaScript zu nutzen. Anderes Anwendungsbeispiel: Man möchte die "normalen" JS-Syntax in einer ``.json``-Datei nutzen, statt dem JSON-Syntax. Schauen wir uns ein Beispiel an. Dieser Text wurde in eine Textdatei geschrieben und soll per PHP geparsed werden: .. code-block:: php // Inhalte einer Textdatei. { beispiel: ['eins', 'zwei', 'drei'] } PHP würde bei diesem Beispiel mit ``json_decode()`` einen Fehler melden: Der String enthält Kommentare, Umbrüche und die Keys und Values sind nicht in doppelte Anführungszeichen eingeschlossen. Der JsonHelper bzw. der ViewHelper ``$jsonHelper->decode()`` kann es aber problemlos umwandeln. So könnte man im TypoScript Setup ein JS-Object definieren: .. code-block:: php // Inhalt im TS-Setup my_conf.data ( { dots: true, sizes: [1, 2, 3] } ) Die Mischung irritiert ein wenig: ``my_conf.data (...)`` öffnet im TypoScript einen Abschnitt für mehrzeiligen Code. Zwischen den ``(...)`` steht dann ein "normales" JavaScript-Object. Das lässt sich im Fluid-Template dann einfach als Array nutzen: .. code-block:: php {nnt3:ts.setup(path:'my_conf.data')->f:variable(name:'myConfig')} {myConfig->nnt3:parse.json()->f:debug()} Oder als data-Attribut an ein Element hängen, um es später per JavaScript zu parsen: .. code-block:: php {nnt3:ts.setup(path:'my_conf.data')->f:variable(name:'myConfig')}