NSJSONSerialization от NSString - PullRequest
       14

NSJSONSerialization от NSString

43 голосов
/ 14 января 2012

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

Ответы [ 4 ]

91 голосов
/ 14 января 2012

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

NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding];

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

id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
12 голосов
/ 14 января 2012

Вам нужно конвертировать 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
}
1 голос
/ 14 января 2012

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

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

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

0 голосов
/ 05 июля 2012

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

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

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

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

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

...