2013-02-03 15 views
5

Sto ricevendo alcuni JSON con stringhe UTF-8 strane. Ad esempio:Gestire correttamente UTF-8 in JSON su iOS

{ 
    "title": "It\U2019s The End"; 
} 

Qual è il modo migliore per gestire questi dati in modo che possa essere presentato in modo leggibile? Mi piacerebbe convertire \ U2019 nella citazione che dovrebbe rappresentare.

Edit: Assumere Ho analizzato la stringa in un NSString * jsonResult

Edit 2: Sto ricevendo il JSON attraverso AFNetworking:

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    NSString* jsonResult = [JSON valueForKeyPath:@"title"]; 
} failure:nil]; 
+0

come si analizza il tuo json? –

+0

Ho aggiornato la mia domanda per mostrare da dove proviene il JSON. – hodgesmr

+0

http://stackoverflow.com/questions/10838372/objective-c-nsstring-not-being-entely-decoded-from-utf-8 –

risposta

5

Aggiornamento:

Kurt ha portato all'attenzione che AFJSONRequestOperation utilizza NSJSONSerialization sotto il cofano. Come tale, è probabilmente il caso che il vostro JSON è valido (come indicato di seguito, non ci dovrebbe essere un ;, e il U dovrebbe essere un minuscolo u. Questo è stato menzionato nella risposta originale al di sotto.


Fa parte del modo in cui JSON è in grado di memorizzare i suoi dati. Sarà necessario passare la stringa JSON attraverso un parser JSON, quindi sarà possibile estrarre correttamente la stringa.

Nota: il JSON che hai pubblicato sopra non è valido, non dovrebbe esserci un punto e virgola alla fine e U dovrebbe essere un minuscolo u, l'esempio sotto ha una stringa JSON modificata

NSString* str = @"{\"title\": \"It\\u2019s The End\"}"; 

NSError *error = nil; 
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary *rootDictionary = [NSJSONSerialization JSONObjectWithData:data 
                   options:0 
                   error:&error]; 
if (error) { 
    // Handle an error in the parsing 
} 
else { 
    NSString *title = [rootDictionary objectForKey:@"title"]; 
    NSLog(@"%@", title); //Prints "It’s The End" 
} 
+0

L'OP ha detto che sta usando 'AFJSONRequestOperation', che decodifica internamente usando' NSJSONSerialization'. Quindi, molto probabilmente, il problema è solo il JSON non valido. –

+0

Non era a conoscenza degli interni di 'AFJSONRequestOperation', grazie per il chiarimento, emendiamo la risposta per riflettere questo. – WDUK

Problemi correlati