2016-08-08 45 views
1

Ich bin in einem seltsamen Problem in Coldfusion mit den Funktionen serializeJSON und deserializeJSON. Wenn ich wie folgt vorgehen:JSON scheint nicht "4D" zu mögen

<cfdump var="#deserializeJSON(serializeJSON('4D '))#"> 

und laden die Seite, erhalte ich einen Fehler, der liest ‚2 bei Charakter JSON Parsen Fehler an:‘ D ‚in 4D‘. Wenn ich das D so ändere, dass die Eingabe etwa wie "4E" aussieht, lädt sich die Seite gut, aber wenn ich die Zahl so ändere, dass die Eingabe etwas wie "5D" liest, bekomme ich denselben Fehler. Ich denke, dass ich versehentlich einen Escape-Charakter betrete, aber ich weiß nicht genug über die Zeichencodierung, um das mit Zuversicht zu sagen. Hat jemand eine Idee, warum das passieren könnte?

+0

pls Bericht zu https://bugbase.adobe.com/ mit einem Repo-Fall. – Henry

Antwort

5

Es scheint, dass Sie ColdFusion 9.x verwenden, da dieses Problem in späteren Versionen von ColdFusion behoben wurde.

Das gleiche Problem vor gefragt wurde, finden Sie in Coldfusion JSON serialization inconsistency

von Leerzeichen [..results einen Fehler, wenn entserialisierten] gefolgt Jede ganz Ziffernfolge mit nachfolgendem D oder F.

JSON parsing failure at character 9:'D' in {"wtf":4D } 

Die Parser trimmt und prüft, ob das letzte Zeichen D oder F (Doppel- oder float) ist und streift es. Wenn die verbleibenden Zeichen numerisch sind, werden keine Anführungszeichen hinzugefügt. Wenn Sie keine nachgestellten Leerzeichen haben, funktioniert es perfekt . Die spezifische Kombination von Nummer, D|F und Leerzeichen löst es aus.

+0

Super danke. Ich habe diesen Thread vorher gelesen, bin aber nicht weit genug nach unten geblättert, um meine genaue Frage zu sehen. Haben Sie einen guten Tag! – ConorBaumgart