2014-10-01 6 views
1

I는 다음과 같습니다 서비스에서 DTO를 반환해야합니다 :JAX R과 데이터 변환

ResponseDTO 
{ 
    Long id; 
    String name; 
    //getter and setter etc. 
} 

서비스를 JSON 형식으로 응답을 반환하고 난 후 응답을받을 때 변환을 위해하지만 클라이언트 측에서 org.codehaus.jackson.jaxrs.JacksonJsonProvider을 사용하고 있습니다 id 값이 자동으로 변경됩니다.

예 : 서비스 측에서 id 값을 Long.MAX_VALUE로 설정했지만 클라이언트 측 json 응답이 서비스에서 보내는 값이 아닌 값 "9223372036854776000"을 표시합니다.

여기에 뭔가가 있습니까?

+0

명확하게하기 위해, 당신은'ResponseDTO.id = 9223372036854775807'을 설정하고'{ "id": "922337203685477000", ...}'을 받습니까? 이것은 몇 가지 이유로 잘못되었습니다. – mabi

+0

예, 잘못되었지만 일어난 것 같습니다. – naveen

답변

1

Javascript는 모두 Number을 64 비트 IEEE 754 부동 소수점 숫자로 처리합니다. 이것들은 정확히 9223372036854775807 (Long.MAX_VALUE의 값)을 나타낼 수 없습니다.

그 이유는 Feature.WRITE_NUMBERS_AS_STRINGS이 존재하기 때문입니다. 실제 번호를 받으려면이 기능을 활성화해야합니다. 이 값을 Number으로 변환해도 9223372036854776000 (올림)이됩니다. 자바 스크립트에서 반올림이 작동하는 방법은 this answer을 참조하십시오.

+0

그래, 잘 작동, 감사합니다 – naveen

+0

당신은 오신 것을 환영합니다. – mabi