web-dev-qa-db-fra.com

NSJSONSérialisation à partir de NSString

Est-ce possible si j'ai une NSString et que je veux utiliser NSJSONSerialization? Comment puis-je faire cela?

43
aherlambang

Vous devez d'abord convertir votre NSString en NSData en procédant comme suit

NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding];

puis utilisez simplement la méthode JSONObjectWithData pour la convertir en JSON

id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
91
Jakub Arnold

Vous devez convertir votre NSString en NSData, à ce stade, vous pouvez utiliser le +[NSJSONSerialization JSONObjectWithData:options:error:] méthode.

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
}
12
sho

Vous pouvez convertir votre chaîne en NSData en disant:

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

Vous pouvez ensuite l'utiliser avec NSJSONSerialization. Notez cependant que NSJSONSerialization est uniquement iOS5, il vaut donc mieux utiliser une bibliothèque comme TouchJSON ou JSONKit, qui vous permettent de travailler directement avec des chaînes de toute façon, vous évitant l'étape de la conversion en NSData.

1
Nick Lockwood

J'ai écrit un article de blog qui montre comment encapsuler la classe JSON iOS native dans un protocole général avec une implémentation qui utilise la classe JSON iOS native.

Cette approche facilite grandement l'utilisation de la fonctionnalité native et réduit la quantité de code que vous devez écrire. De plus, il est beaucoup plus facile de désactiver l'implémentation native avec, disons, JSONKit, si celle native s'avérait insuffisante.

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

Le billet de blog contient tout le code dont vous avez besoin. Il suffit de copier/coller :)

J'espère que ça aide!

0
Daniel Saidi