2013-09-16 9 views
13

Ich arbeite mit Daten über einen IBM MQ-Aufruf, bei dem eine 0 zurückgegeben wird als +0.0, wenn dies von ColdFusion 10 (10,0,11,285437) serialisiert wird JSON und kann nicht deserialisiert werden.JSON mit Pluszeichen serialisieren führt zu ungültigem JSON

stPolicy = { "prem": "+0.0" }; 
serializedData = serializeJSON(stPolicy); 
writeDump(isJSON(serializedData)); 
writeDump(deserializeJSON(serializedData)); 

Diese gibt NO für isJSON und ein Fehler bei dem Versuch, JSON parsing failure at character 9:'+' in {"prem":+0.0} deserialisieren.

Ich bin in der Lage, dies zu umgehen, indem Sie alle +0 zu 0 ersetzen, aber ich vermute, das ist ein Fehler in ColdFusion. Hat jemand anderes dieses Problem und eine bessere Lösung implementiert?

Bug Bericht eingereicht: Bug #3632972

+0

https://bugbase.adobe.com/ thx – Henry

+0

@Henry Fehler https://bugbase.adobe.com/index.cfm?event=bug&id=3632972 –

+9

Verdammt eingegeben ... wann werden alle diese Fehler in der JSON-Behandlung von ColdFusion enden? Ich denke, sie müssen von vorne anfangen und es richtig machen. Unnötig zu sagen, dass ich dafür stimmen werde. Es ist gebrochen auf CF9 und CF10, BTW. Aber funktioniert gut auf Railo. Und sogar OpenBD. –

Antwort

1

Adobe den Fehler hat als feste aufgeführt in ihren bug database, aber es ist noch nicht veröffentlicht worden. Hier ist die Lösung, die ich mir ausgedacht habe. Ersetzen Sie einfach die +0 mit 0

private string function serializeJSONFixCF10(required string serializedData) { 
    return replace(arguments.serializedData,'+0','0','all'); 
}