Est-ce possible si j'ai une NSString et que je veux utiliser NSJSONSerialization? Comment puis-je faire cela?
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];
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
}
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.
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!