NSJSONSerialisierungsserialisierung einer Zeichenfolge, die Schrägstriche / und HTML enthält, wird nicht korrekt umgebrochen

9

Ich versuche, einige einfache HTML in einen String-Wert in einem JSON-Objekt zu konvertieren, und ich habe Probleme, die Zeichenfolgencodierung nicht die Zeichenfolge in NSJSONSerialization zu entkommen.

Beispiel ... Ich habe eine Zeichenfolge, die einen einfachen HTML-Text enthält:

%Vor%

Das gewünschte Ergebnis ist JSON mit HTML als Wert:

%Vor%

Ich verwende die Standardtechnik, um ein NSDictionary in einen NSString zu konvertieren, der JSON enthält:

%Vor%

Der JSON, der mit dieser Methode erstellt wurde, ist gültig, der HTML-Code enthält jedoch alle Schrägstriche:

%Vor%

Dies erzeugt ungültiges HTML in der Instruktions-JSON-Zeichenkette.

Ich würde gerne bei NSJSONSerialization bleiben, da wir das überall sonst in unserem Framework verwenden und ich vor dem Wechsel in Nicht-Apple-Bibliotheken gebrannt wurde, da sie nicht mehr unterstützt werden. Ich habe viele verschiedene String-Codierungen ausprobiert und alle entziehen sich den spitzen Klammern.

Anscheinend \ / ist eine gültige Darstellung in JavaScript für die Zeichen /, weshalb der Schrägstrich in Schrägstrichen maskiert ist (selbst der StackOverflow-Texteditor hat es nicht geschafft). Sehen: Escape-JSON-String mit einem Schrägstrich? und auch JSON: Warum sind Schrägstriche entkommen? . Ich will das einfach nicht und es scheint keine Möglichkeit zu geben, iOS daran zu hindern, Schrägstriche in String-Werten beim Serialisieren zu umgehen.

    
JasonD 03.04.2013, 17:55
quelle

2 Antworten

3

Ich glaube, NSJSONSerialization verhält sich in Bezug auf HTML-Codierung wie vorgesehen.

Wenn Sie sich einige Fragen ansehen ( 1 , 2 ) Wenn Sie HTML in JSON codieren, sehen Sie in den Antworten immer, dass Sie die Schrägstriche umgehen.

JSON benötigt keine Schrägstriche, um es zu maskieren, aber HTML lässt nicht zu, dass eine JavaScript-Zeichenfolge </ enthält, wie es sein kann verwechselt mit dem Ende des <SCRIPT> -Tags.

Hier finden Sie die Antworten hier , hier und am direktesten den w3.org HTML4 Anhang was in B.3.2 Angabe von Nicht-HTML-Daten

steht %Vor%

Obwohl dieses Verhalten Probleme für Sie verursachen kann, spielt NSJSONSerialisation nur nach den uralten Regeln für die Codierung von HTML-Daten zur Verwendung in <SCRIPT> -Tags.

    
Jessedc 08.12.2013, 00:14
quelle
0

Hier ist meine Unterklasse von AFJSONRequestSerializer zum Entfernen von \ vor / Symbolen im resultierenden JSON; praktisch, wenn Sie AFNetworking verwenden

%Vor%     
Dannie P 12.06.2015 12:03
quelle