2013-09-16 15 views
13

Pracuję z danymi przez wywołanie IBM MQ, gdzie 0 jest zwracane jako +0.0, gdy jest serializowane przez ColdFusion 10 (10,0,11,285437), co powoduje, że jest on nieprawidłowy JSON i nie można go przekształcić z postaci szeregowej.serializuje JSON z wynikiem plusa powoduje niepoprawne JSON

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

ten wyprowadza NO dla isJSON i błąd podczas próby deserializacji JSON parsing failure at character 9:'+' in {"prem":+0.0}.

Jestem w stanie obejść to, zastępując wszystkie +0 na 0, ale domyślam się, że to błąd w ColdFusion. Czy ktoś inny miał ten problem i wprowadził lepszą poprawkę?

raport Bug złożony: Bug #3632972

+0

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

+0

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

+9

cholery ... dokładnie kiedy te wszystkie błędy w obsłudze JSON ColdFusion dobiegną końca? Myślę, że muszą zacząć od zera i zrobić to poprawnie. Nie trzeba dodawać, że zagłosuję za tym. Jest uszkodzony na CF9 i CF10, btw. Ale działa dobrze na Railo. A nawet OpenBD. –

Odpowiedz

1

Adobe ma błąd wymieniony jako stałe w ich bug database, ale nie została jeszcze wydana. Oto poprawka, którą wymyśliłem. Wystarczy wymienić +0 z 0

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