Objective-C: NSSsortingng n'étant pas entièrement décodé à partir de UTF-8

J'interroge un server Web qui renvoie une string JSON en tant que NSData . La string est au format UTF-8 donc elle est convertie en NSSsortingng comme ceci.

 NSSsortingng *receivedSsortingng = [[NSSsortingng alloc] initWithData:receivedData encoding:NSUTF8SsortingngEncoding]; 

Cependant, certaines échappées UTF-8 restnt dans la string JSON sortie, ce qui provoque un comportement erratique de mon application. Des choses comme \u2019 restnt dans la string. J'ai tout essayé pour les supprimer et les replace par leurs personnages réels.

La seule chose à laquelle je peux penser est de replace les occurrences d'échappement UTF-8 par leurs caractères manuellement, mais c'est beaucoup de travail s'il y a un moyen plus rapide!

Voici un exemple d'une string incorrectement analysée:

 {"title":"The Concept, Framed, The Enquiry, Delilah\u2019s Number 10 ","url":"http://livebrum.co.uk/2012/05/31/the-concept-framed-the-enquiry-delilah\u2019s-number-10","date_range":"31 May 2012","description":"","venue":{"title":"O2 Academy 3 ","url":"http://livebrum.co.uk/venues/o2-academy-3"} 

Comme vous pouvez le voir, l'URL n'a pas été complètement convertie.

Merci,

La syntaxe \u2019 ne fait pas partie du encoding UTF-8, c'est une syntaxe spécifique à JSON. NSSsortingng parsing UTF-8, pas JSON, donc ne le comprend pas.

Vous devez utiliser NSJSONSerialization pour parsingr le JSON puis tirer la string que vous voulez de la sortie de cela.

Ainsi, par exemple:

 NSError *error = nil; id rootObject = [NSJSONSerialization JSONObjectWithData:receivedData options:0 error:&error]; if(error) { // error path here } // really you'd validate this properly, but this is just // an example so I'm going to assume: // // (1) the root object is a dictionary; // (2) it has a ssortingng in it named 'url' // // (technically this code will work not matter what the type // of the url object as written, but if you carry forward assuming // a ssortingng then you could be in trouble) NSDictionary *rootDictionary = rootObject; NSSsortingng *url = [rootDictionary objectForKey:@"url"]; NSLog(@"URL was: %@", url);