2014-08-31 2 views
0

"JSON.parse"구문 분석 타임 스탬프가 올바르지 않습니다. 구문 분석 전에javascript JSON.parse 잘못된 타임 스탬프

strObj='{"Timestamp":635450757182431418}'; 
console.log ('String object:' + strObj); // Timestamp":635450757182431418 
var parseObj= JSON.parse (strObj); 
console.log (parseObj); // Timestamp: 635450757182431400 

http://jsfiddle.net/kwakwak/rqb6gf4z/

: 635450757182431418, 구문 분석 후 : 635450757182431400

문제가 무엇입니까? 감사합니다.

답변

0

635450757182431418IEEE754 double precision 인 JavaScript 형식 번호에 비해 너무 큽니다. 즉, 정수 부분에 약 53 비트가 있음을 의미합니다.

이 숫자는 자바 스크립트 숫자로 정확하게 표현 될 수 없으므로 다른 형식 (문자열, 숫자 배열, 사용자 정의)을 사용해야합니다. 당신이 문자열로 타임 스탬프를 얻고 싶다면

, 당신은이 작업을 수행 할 수 있습니다

var strTimestamp = strObj.match(/"Timestamp"\s*:\s*(\d+)/)[1]; 
+0

이 문자열의 출처는 어디입니까? 소스에서 문제를 해결해야합니다. –

+0

Ajax - 소스를 변경할 수 있습니까? 정수가 아닌 문자열로 어떻게 파싱 할 수 있습니까? – Kwakwak

+0

@Kwakwak 편집보기 –

0

당신이 635450757182431418 값이 저장되는 문자열을 가지고 있지만 숫자로는 635450757182431400로 반올림 때.

그냥 번호 JS보다 큰 635450757182431400을 지원하지 않기 때문에 당신은 635450757182431400 같은 결과를 얻을 것이다

635450757182431418 

크롬 콘솔이를 입력합니다.