Je reçois json d'un service web dans un NSMutableData.iphone objectif-c: conversion chaîne à NSData pour désérialisation json
Cela est converti en un NSDictionary en utilisant TouchJson.
NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:responseData error:&error];
NSString *strData = [dictionary objectForKey:@"cars"];
Je récupère alors une chaîne à partir d'une clé de ce dictionnaire.
La chaîne ressemble ci-dessous
{
b = "http://schemas.datacontract.org/";
car = (
{
"car_name" = "Honda Civic";
year = 2011;
"dealer" = "local honda dealer";
"bought on" = {
nil = 1;
};
"license_number" = 1234567;
status = ReadyToGo;
}
)};
Essentiellement, il peut être « n » enregistrements contre la touche « voiture ».
lorsque je tente de convertir le dessus NSData en utilisant
NSData *jsonData = [strData dataUsingEncoding:NSUTF8StringEncoding];
et aussi
NSData *jsonData = [strData dataUsingEncoding:[NSString defaultCStringEncoding]];
mais je reçois
[__NSCFDictionary dataUsingEncoding:]: unrecognized selector sent to instance 0x532bb70
J'ai essayé quelques autres encodages disponibles et Xcode encore vomi.
Comment puis-je déterminer l'encodage utilisé?
Ceci est ma première tentative de déseralisation de json dans l'objectif-c.
Qu'est-ce que je manque/fais mal ici?
Merci
Je livrerai qu'un essai. J'allais plus tard convertir le NSData dans un autre dictionnaire et retirer la valeur de la clé 'voiture', puis la désérialiser en utilisant touchjson. Est-ce la mauvaise façon de s'y prendre? –
Oui, le désérialiseur json fonctionne sur les objets et les sous-objets, donc ils sont déjà correctement décodés. Tous les objets et sous-objets doivent être des dictionnaires, des tableaux ou des paires clé/valeur. – NWCoder
Cela a fonctionné !!!. Merci. Premièrement, je pensais que je devrais lui donner des morceaux spécifiques à désérialiser. Deuxièmement ce qui m'a fait trébucher, c'est que ce qui suit a fonctionné: NSString * strData = [dictionnaire objectForKey: @ "cars"]; NSLog (@ "voitures:% @", strData); ce qui m'a donné l'impression que je recevais une chaîne pour cette clé. –