2014-11-19 2 views
1

ColdFusion은 SerializeJSON 및 deSerializeJSON을 통해 JS에 전달할 때 문자열을 숫자로 변환합니다.ColdFusion SerializeJSON 및 deSerializeJSON이 문자열을 숫자로 변환 중입니다.

두 세트 사이에서 'E'가 사용되는 경우에만 발생합니다. 3E6, 65E3, 56e45 등입니다. 이것은 cfscript 내부의 코드입니다.

x = "2e9"; 
writedump(SerializeJSON(x)); 
writedump(deSerializeJSON(SerializeJSON(x))); 

Output: 
2.0E9 2000000000 

다른 문제가있는 경우 제안 해주세요.

+0

문자열을 포함하는 변수를 직렬화하는 이유는 무엇입니까? 배열이나 구조를 직렬화하기 만하면됩니다. –

+0

단순한 재현의 사례입니다. Simon : 직렬화되는 데이터 구조의 어디에서나 비슷한 문자열에 영향을 미칩니다. –

+0

위의 코드를 이렇게 분리하면 이상합니다. **
x = 2e9;
\t \t \t y = SerializeJSON (x);
\t \t \t z = deSerializeJSON (y);
\t \t \t \t writedump (z); **
, 출력이 2000000000입니다. 누구나이 부분에 대한 의견을 공유 할 수 있습니까? –

답변

8

이것은 : https://bugbase.adobe.com/index.cfm?event=bug&id=3695627 : "SerializeJSON은 과학 표기법처럼 보이는 문자열을 수레로 변환합니다."

이것은 CF9의 알려진 버그이며 CF10에서 수정되었습니다.

그 동안 문자열을 과학적 표기법으로 숫자로 보지 않도록 ColdFusion에 강제로 붙여 넣기 만하면됩니다.

또는 CF10으로 업그레이드 (CF9는 다음 달의 수명 만료 예정, btw). 레일 오에게.

+0

감사합니다. Adam. 도움이됩니다. –

+2

또는 벤의 좋은 직렬화 CFC를 사용해보십시오. https://github.com/bennadel/JsonSerializer.cfc –

+0

예 Raymond, 그냥 지나갔습니다. 희망은 도움이 될 것입니다 ... 감사합니다 –