NSJSONСериализация из NSString

Возможно ли, если у меня есть NSString и я хочу использовать NSJSONSerialization? Как мне это сделать?


person aherlambang    schedule 13.01.2012    source источник
comment
На raywenderlich.com/5492/working- есть хорошее руководство. with-json-in-ios-5 относительно использования NSJSONSerialization.   -  person Dean    schedule 14.01.2012
comment
Если производительность является вашим приоритетом, JSONKit — лучшая альтернатива.   -  person Danra    schedule 14.01.2012


Ответы (4)


Сначала вам нужно будет преобразовать NSString в NSData, выполнив следующие действия.

NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding];

затем просто используйте метод JSONObjectWithData, чтобы преобразовать его в JSON.

id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
person Jakub Arnold    schedule 14.01.2012
comment
для удобства вы можете поместить этот код в категорию NSJSONSerialization. - person jianpx; 24.11.2013
comment
Используйте «NSJSONSerialization JSONObjectWithData» осторожно, так как, хотя он имеет параметр NSError*, он может вызывать исключения при возникновении ошибки! Рекомендуется заключить его в блок '@try {} @catch(...)'. - person LaborEtArs; 19.11.2017

Вам нужно преобразовать 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
}
person sho    schedule 14.01.2012

Вы можете преобразовать свою строку в NSData, сказав:

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

Затем вы можете использовать его с NSJSONSerialization. Однако обратите внимание, что NSJSONSerialization предназначен только для iOS5, поэтому вам может быть лучше использовать библиотеку, такую ​​​​как TouchJSON или JSONKit, обе из которых в любом случае позволяют вам напрямую работать со строками, избавляя вас от шага преобразования в NSData.

person Nick Lockwood    schedule 14.01.2012

Я написал сообщение в блоге, в котором показано, как обернуть собственный класс JSON iOS в общий протокол вместе с реализацией, использующей собственный класс JSON iOS.

Такой подход значительно упрощает использование нативных функций и сокращает объем кода, который необходимо написать. Кроме того, намного проще отключить нативную реализацию, скажем, с помощью JSONKit, если нативная реализация окажется недостаточной.

http://danielsaidi.com/blog/2012/07/04/json-in-ios

Сообщение в блоге содержит весь код, который вам нужен. Просто скопируйте/вставьте :)

Надеюсь, поможет!

person Daniel Saidi    schedule 04.07.2012
comment
Обратите внимание, посту 5 лет :) - person Daniel Saidi; 15.11.2017