2013-05-14 6 views
3

사전을 JSON으로 변환 할 때 NSJSONSerialization을 사용하고 있습니다.NSJSON 직렬화 출력 수를 float?

해당 사전에 NSDecimalNumber (== 0)를 포함하면 0으로 출력됩니다. 이것은 잘못된 것입니다. 0은 int입니다. 0.0으로 출력해야합니다. 0.0로 출력을 어떤 방법

NSDecimalNumber *decimal = [[NSDecimalNumber alloc] initWithFloat:0.0f]; 
// when fed into NSJSONSerialization it outputs as 0 

있습니까 :

이것은 내가 뭘 무엇인가?

나는 내 가정에서 틀린가? 0은 유효한 float입니까?

+3

'0'은 Objective-C 프로그래밍 언어에서 'float'유형의 상수로 간주되지 않지만 분명히 유효한 부동 소수점 숫자입니다. JSON은 유형 정보없이 이름 - 값 쌍으로 항목을 인코딩하므로, 비 직렬화 된 필드의 최종 유형을 결정하는 것은 수신 측에 달려 있습니다. – dasblinkenlight

+0

그래서 JSON이 이렇게 생겼 으면 좋겠습니까? : { \t myFloat : 0.0 ...} –

답변

4

NSJSONSerialization 숫자가 출력되는 방식에 영향을 줄 수있는 방법이 없습니다. 하지만 당신은 정말로 이것에 대해 걱정할 필요가 없습니다. JSON은 다른 유형의 숫자를 구별하지 않으므로 계산을 수행하는 실제 숫자 유형과 상관없이 항상 소수점이 있거나없는 숫자를 허용해야합니다.

+0

좋은 답변 감사합니다. API 개발자에게 알려 드리겠습니다. –