44 votes

NSJSONSerialization à partir de NSString

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

93voto

Jakub Arnold Points 21204

Tout d’abord, vous devrez convertir votre NSString en NSData en procédant comme suit:

 NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding];
 

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

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

13voto

sho Points 479

Vous devez convertir votre NSString en NSData , vous pouvez alors utiliser la méthode +[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
}
 

1voto

Nick Lockwood Points 23277

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

 NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
 

Vous pouvez ensuite l'utiliser avec NSJSONSerialization . Notez toutefois que NSJSONSerialization est uniquement iOS5. Il est donc préférable d’utiliser une bibliothèque telle que TouchJSON ou JSONKit, qui vous permettent néanmoins de travailler directement avec des chaînes, ce qui vous évite de passer à la conversion en NSData.

0voto

Daniel Saidi Points 351

J'ai écrit un post de blog qui montre comment envelopper le natif iOS classe JSON dans un protocole général avec une mise en œuvre qui utilisent le natif iOS classe JSON.

Cette approche rend les choses beaucoup plus faciles à utiliser les fonctionnalités natives et réduit la quantité de code à écrire. En outre, elle rend beaucoup plus facile de passer le natif de mise en œuvre avec, disons, JSONKit, si le natif s'avérerait insuffisante.

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

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

Espérons que cela aide!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X