2013-02-03 1 views
5

Otrzymuję niektóre JSON, które ma dziwne ciągi UTF-8. Np .:Prawidłowe obsługiwanie UTF-8 W JSON na iOS

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

Jaki jest najlepszy sposób na przetwarzanie tych danych, aby można je było przedstawić w czytelny sposób? Chciałbym przekształcić tę \ u2019 w znak cudzysłowu, który powinien reprezentować.

Edit: Załóżmy mam analizowany ciąg do NSString * jsonResult

Edit 2: Otrzymuję JSON przez AFNetworking:

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

Jak analizować swoje json? –

+0

Zaktualizowałem moje pytanie, aby pokazać, skąd pochodzi JSON. – hodgesmr

+0

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

Odpowiedz

5

Aktualizacja:

Kurt zwrócił uwagę, że pod maską używa AFJSONRequestOperation. Jako takie, to chyba przypadek, że JSON jest nieważny (jak wspomniano poniżej, nie powinno być ; i U powinny być pisane małymi literami u. To był wymieniony w odpowiedzi pierwotnej poniżej.


Jest to część sposobu, w jaki JSON może przechowywać swoje dane.Trzeba będzie przekazać ciąg JSON przez parser JSON, a następnie będzie można poprawnie wyodrębnić ciąg znaków:

Uwaga: Wysłany JSON powyżej jest nieważny, nie powinien być średnik na końcu, a U powinno być małe litery u, poniższy przykład ma zmodyfikowany ciąg JSON

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

OP powiedział, że używają 'AFJSONRequestOperation', która wewnętrznie dekoduje używając' NSJSONSerialization'. Najprawdopodobniej problemem jest właśnie nieważny JSON. –

+0

Nie wiedziałam o wewnętrznych elementach 'AFJSONRequestOperation', dzięki za wyjaśnienie, poprawię odpowiedź, aby to odzwierciedlić. – WDUK