• Что случилось:
jsonData
(как вы дали) не является hexData представляющий JSON. (! Не жизнеспособный раствор)
• Быстрый хака, чтобы получить JSON для использования на Вашем сайте CodeBeautify:
NSDictionary *dictFromData = [NSKeyedUnarchiver unarchiveObjectWithData:jsonData];
NSData *realJSONData = [NSJSONSerialization dataWithJSONObject:dictFromData options:0 error:nil];
NSString *strFINAL = [[NSString alloc] initWithData:realJSONData encoding:NSUTF8StringEncoding];
NSLog(@"StrFINAL: %@", strFINAL);
Примечание: Да, я обошел error
параметры, и мы не должны. С NSJSONWritingPrettyPrinted
вместо 0
в параметре options:
у вас есть результат, почти такой же, как у CodeBeautify.
• Как я там:
Firt, копировать/вставить рельефности строку NSData
с this answer. Таким образом, я получил jsonData
, как вы. Затем я попытался просто то, что оно должно быть дано проинформированым:
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&errorJSON];
Который не работает давая ошибку:
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x17598540 {NSDebugDescription=Invalid value around character 0.}
Но с NSDictionary *dictWithData = [NSKeyedUnarchiver unarchiveObjectWithData:jsonData];
, мне удалось получить реальную NSDictionary
. Но NSKeyedArchiver
/NSKeyedUnarchiver
делают что-то «эквивалентное» NSJSONSerialization
: он сериализует, преобразует NSObject
в NSData
(и наоборот). Но более мощный: для любого объекта, который соответствует NSCoding
. Здесь, поскольку он изначально из JSON (только NSString
, NSNumber
, NSArray
и NSDictionary
объектов, а не пользовательский), он работает без кода. Вы, например, попытались сохранить его в NSUserDefaults
, и это не так.plist либо (это было также одно из моих попыток, я сохранил jsonData
в памяти и использовал dictionaryWithContentsOfFile:
, давая мне странный ответ, но важный в его рельефе: «" $ class "=" {value = 23} ";" что привело меня к NSKeyArchiver
/NSKeyUnarchiver
). Я не знаю, что вы сделали точно.
• Заключение:
Так что, где-то, вы смешали материал, найденный в Интернете. Вам нужно переделать это. Вы не можете этого допустить. В вашем коде есть проблема в другом месте. Откуда у вас jsonData
? Что вы с ним сделали?
Каков ваш код для конвертирования именно этого 'jsonData'? – Larme
@Lamre jsonData - это NSData. Мне нужен код для его печати. Я могу преобразовать его в NSDictionary, но его нельзя сравнивать в codebeautify. –
Вы подтверждаете, что NSData не ноль. –