2014-12-26 5 views
0

나는 버전이 필요이 JSON에서 사전에 float 값으로 float 값을 추가하는 방법은 무엇입니까?

{ 
    "name":"swift", 
    "version":1.0, 
    "edition":1, 
    "date":"2014-12-26" 
} 

이 정수 1로 부동 1.0하지 1과 에디션으로 전송되는, 서버 등에 JSON 값과 MD5 값을 계산해야합니다.

그래서 나는 사전을 만들려고하고 NSJSONSerialization으로 수행,

NSDictionary *d = @{@"name":@"swift", 
@"version":[NSDecimalNumber decimalNumberWithString:@"1.0"], 
@"edition":[NSNumber numberWithInt:1],@"date":@"2014-12-26"}; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:d options:0 error:nil]; 

을하지만이

{ 
    "name":"swift", 
    "version":1, 
    "edition":1, 
    "date":"2014-12-26" 
} 

그래서 MD5 값이 일치하지되어 같은 JSON 응답을 창조하고있다.

소수점 (1.0)을 가진 "버전"에 대한 float 값을 가진 json을 만드는 데 도움을 줄 수 있습니까?

+1

[있는 NSString stringWithFormat : ". % 1F"@를 1.F] 여기서 1.F 당신의 부유물입니다. –

+0

@ 영점 - 틀렸어. 숫자는 JSON 객체에 추가 할 NSNumber (또는 NSDecimalNumber)로 인코딩되어야합니다. 문자열로 인코딩하면 JSON에 따옴표로 표시되며 의도 한 번호가 아닌 다른 쪽 끝에 문자열로 수신됩니다. –

+0

생각해 보았지만 (JSON을 사용한 적은 한번도 없었습니다) - OP가 "Format String Specifiers"에 대해 알고 있는지 확인하고 싶었습니다. –

답변

1

숫자 1.0을 JSON에서 간단히 1으로 보내는 데 아무런 문제가 없습니다. NSNumber에서 부동 소수점을 인코딩 한 경우 약간의 행운을 내기 위해 .0을 얻을 수도 있지만 NSDecimalNumber를 사용하면됩니다.

`... @"version":@(1.0)...` 

전체 사전 :

NSDictionary *d = @{@"name":@"swift", 
@"version":@(1.0), 
@"edition":@(1), 
@"date":@"2014-12-26"}; 
0

에서, NSMutableDictionary 만들기 NSNumber에 수를 변환하고 NSMutableDictionary에 넣어.

NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 

float value = 1.0; 

NSNumber *number = [NSNumber numberForFloat:value]; 
[dict setObject:number forKey:@"version"]; 

이나와 위의 두 라인 교체 리터럴을 사용 : 당신이 그것을 얻을 수있는 문자열로

dict[@"version"] = @(value); 
관련 문제