Возможно ли, если у меня есть NSString и я хочу использовать NSJSONSerialization? Как мне это сделать?
NSJSONСериализация из NSString
Ответы (4)
Сначала вам нужно будет преобразовать NSString
в NSData
, выполнив следующие действия.
NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding];
затем просто используйте метод JSONObjectWithData
, чтобы преобразовать его в JSON.
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
Вам нужно преобразовать NSString
в NSData
, в этот момент вы можете использовать метод +[NSJSONSerialization JSONObjectWithData:options:error:]
.
NSString * jsonString = YOUR_STRING;
NSData * data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError * error = nil;
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
if (!json) {
// handle error
}
Вы можете преобразовать свою строку в NSData, сказав:
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
Затем вы можете использовать его с NSJSONSerialization
. Однако обратите внимание, что NSJSONSerialization
предназначен только для iOS5, поэтому вам может быть лучше использовать библиотеку, такую как TouchJSON или JSONKit, обе из которых в любом случае позволяют вам напрямую работать со строками, избавляя вас от шага преобразования в NSData.
Я написал сообщение в блоге, в котором показано, как обернуть собственный класс JSON iOS в общий протокол вместе с реализацией, использующей собственный класс JSON iOS.
Такой подход значительно упрощает использование нативных функций и сокращает объем кода, который необходимо написать. Кроме того, намного проще отключить нативную реализацию, скажем, с помощью JSONKit, если нативная реализация окажется недостаточной.
http://danielsaidi.com/blog/2012/07/04/json-in-ios
Сообщение в блоге содержит весь код, который вам нужен. Просто скопируйте/вставьте :)
Надеюсь, поможет!