Raketenwilli: Wie Darstellung und Inhalt trennen?

Beitrag lesen

problematische Seite

Man kann Daten JSON-gerecht maskieren/codieren. Dazu gehören insbesondere die Zeichen " und /, welche mit einem Backslash maskiert werden müssen, da sie ansonsten als Sonderzeichen mit bestimmter Bedeutung interpretiert werden.

Man muss das aber nur dann tun, wenn man den JSON-Text selbst erstellen will.

Die JSON-Encoder der Programmiersprachen machen das gerne automatisch.

PHP:

<?php
header( 'Content-Type: text/json; charset=utf-8' );
$var = '<span style="letter-spacing: .1em">B</span>aum';
echo json_encode( $var ) . PHP_EOL;

Ausgabe:

"<span style=\"letter-spacing: .1em\">B<\/span>aum"

JS:

var str = '<span style="letter-spacing: .1em">B</span>aum';
console.log( JSON.stringify( str ) );

Ausgabe:

"<span style=\"letter-spacing: .1em\">B<\/span>aum"

Beide Sprachen können das HTML nach einem JSON-Decode auch in den Output - oder (mit geeigneten Methoden) ins DOM (Dokument) einbauen. Darüber hinaus ist auch der Inhalt egal: Das können beliebige Strings (so lange diese UTF-8-codiert wurden), Zahlen, Arrays, Objekte, sogar binäres Zeug sein, es müssen halt nur „Werte“ sein, welche die jeweilige Anwendung in eine Variable aufnehmen kann.