Генерирование JSON из NSMutableDictionary
Я новичок в разработке Objective-C и iOS и пытаюсь написать метод для генерации строки JSON, но когда я NSLog это я получаю кучу шестнадцатеричных кодов (я предполагаю, что они указатели адреса) может кто-то взглянуть на этот метод и сказать мне, что я делаю не так..
-(NSData *)generateInputJSON
{
NSError* error = nil;
NSString* region = [[NSLocale currentLocale]localeIdentifier];
NSString* language = [[NSLocale preferredLanguages]objectAtIndex:0];
NSMutableDictionary* properties = [NSMutableDictionary dictionaryWithObjectsAndKeys:
_sphereODNumber,@"sphereOD",
_sphereOSNumber,@"sphereOS",
_cylinderODNumber,@"cylinderOD",
_cylinderOSNumber,@"cylinderOS",
_visionCorrection,@"visionCorrection",
region,@"region",
language,@"language",
nil];
if([_visionCorrection isEqualToString:@"multiFocal"] ||
[_visionCorrection isEqualToString: @"progressive"])
{
[properties setValue:_addODNumber forKey:@"addOD"];
[properties setValue:_addOSNumber forKey:@"addOS"];
}
if([_visionCorrection isEqualToString: @"progressive"])
{
[properties setValue:_fittingHeightNumber forKeyPath:@"fittingHeight"];
}
NSData* inputJSON = [NSJSONSerialization dataWithJSONObject:properties options:NSJSONWritingPrettyPrinted error:&error];
return inputJSON;
}
мой журнал возвращается:
<7b0a2020 226c616e 67756167 6522203a 2022656e 222c0a20 20227669 73696f6e 436f7272 65637469 6f6e2220 3a202270 726f6772 65737369 7665222c 0a202022 6164644f 4422203a 20342e35 2c0a2020 22616464 4f532220 3a20342e 352c0a20 20227370 68657265 4f532220 3a20342e 352c0a20 20227265 67696f6e 22203a20 22656e5f 5553222c 0a202022 63796c69 6e646572 4f532220 3a20342e 352c0a20 20226669 7474696e 67486569 67687422 203a2031 372c0a20 20227370 68657265 4f442220 3a20342e 352c0a20 20226379 6c696e64 65724f44 22203a20 342e350a 7d>
2 ответа
То, что вы видите, - это описание объекта NSData, который представляет собой просто байты данных в шестнадцатеричном формате. Если бы вы (скажем) записали эти данные в файл и открыли файл в текстовом редакторе, вы бы действительно увидели нужную вам строку. Поскольку вы хотите вернуть строку из вашей функции, вы можете преобразовать NSData в строку следующим образом:
return [[NSString alloc] initWithData:inputJSON encoding:NSUTF8StringEncoding];
Не забудьте автоматически выпустить это, если вы не в коде ARC. Вы также должны изменить тип возврата вашего метода с NSData*
в NSString*
если вы собираетесь вернуть строку.
Преобразовать данные в NSString
вот так
NSString *string = [[NSString alloc]initWithData:inputJSON encoding:NSUTF8StringEncoding];
затем просто распечатайте его с помощью NSLog
NSLog(@"%@", string);