2014-01-28 5 views
0

JSON 값 1.0에 double 값 1.0을 serialize하려고합니다. 그러나 다음 코드를 출력하는 대신 1.0의 1 :JSON 문자열에 double 값 serialize

var jsSerializer = new JavaScriptSerializer(); 
var json = jsSerializer.Serialize(1.0); 
Console.WriteLine(json); // actual: 1, expected: 1.0 

는 사람이 어떤 아이디어는 어떻게이 작업을 수행해야합니까?

JavaScriptConverter을 확장하여 double 형식의 사용자 지정 변환기를 만들었지 만 문제는 Serialize 메서드는 IDictionary<string, object>을 반환해야합니다.

+0

차이점은 무엇입니까? JSON에 관한 한 1과 1.0은 동일하지 않습니까? Javascript는 적어도 Number 유형 만 있습니다. – PaulK

답변

1

중요하지 않습니다. 자바 스크립트의 모든 숫자는 소수점 수 (IEEE 754 배정 밀도, 정확하게하는)을 부동 : 당신이

  • var x = 1 ;
  • var x = 1.0 ;
  • { x : 1 }

최종 결과가 동일 말할 여부 : x은 1의 값을 갖는 부동 소수점 숫자입니다.

1

값에 특정 텍스트 형식이 필요한 경우이를 문자열로 serialize해야합니다. JSON은 텍스트 표현이 아니라 값을 정확하게 직렬화 및 비 직렬화하는 것입니다. "Number"데이터 유형 하나만 있습니다. 정수 값의 끝에 ".0"이 부족한 경우, 사양이 그렇게하도록 지시했거나 사양이 구현을 위해 결정을 남기므로 말입니다. 많은 어플리케이션에서 정수 당 2자를 절약하는 것이 중요합니다.