NSData à NSString avec réponse JSON
NSData* jsonData est la réponse http contient les données JSON.
NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"jsonString: %@", jsonString);
J'ai obtenu le résultat:
{ "result": "\u8aaa" }
Quelle est la bonne façon d'encoder les données de la chaîne correcte, pas de chaîne unicode comme "\uxxxx"?
U ne essayez NSString* jsonString = [[NSString alloc] initWithData:jsonData]; ?
Exactement comment avez-vous l'impression
C'est difficile, car il doit être \u \U. Est-ce que vous pouvez faire à ce sujet?
J'ai utilisé AFNetworking à la demande. Et puis obtenir le responseData. Pas encore utiliser un parser JSON. J'ai essayé JSONKit à analyser mais aussi obtenir le même résultat.
Oui, vous avez raison. Il est minuscule "u". J'ai édité ma question. Merci.
Exactement comment avez-vous l'impression
{ "result" = "\U8aaa"; }
? Qui ressemble (presque) comme les NSLog d'un dictionnaire. Avez-vous déjà utiliser un parser JSON (par exemple NSJSONSerialization) ?C'est difficile, car il doit être \u \U. Est-ce que vous pouvez faire à ce sujet?
J'ai utilisé AFNetworking à la demande. Et puis obtenir le responseData. Pas encore utiliser un parser JSON. J'ai essayé JSONKit à analyser mais aussi obtenir le même résultat.
Oui, vous avez raison. Il est minuscule "u". J'ai édité ma question. Merci.
OriginalL'auteur shiami | 2013-06-27
Vous devez vous connecter pour publier un commentaire.
Si vous convertissez les données JSON
à un
NSDictionary
(par exemple à l'aide deNSJSONSerialization
) et l'impression du dictionnaireensuite, vous obtiendrez la sortie
La raison en est que la
description
méthode deNSDictionary
utilise "\Unnnn" séquences d'échappementpour tous les caractères non-ASCII. Mais c'est seulement pour affichage dans la console, le dictionnaire est corriger!
Si vous imprimez la valeur de la clé
alors vous obtiendrez le résultat escompté
OriginalL'auteur Martin R
Je n'arrive pas à comprendre quel est le problème. AFNetworking vous a donné un JSON valide paquet. Si vous voulez le code ci-dessus à la sortie du caractère au lieu de la
\u…
séquence d'échappement, vous devriez amadouer le serveur d'alimentation vous avez le résultat à modifier sa sortie. Mais cela ne devrait pas être nécessaire. Ce que probablement vous voulez faire est de lancer à travers un JSON deserializer......et vous devriez obtenir le dictionnaire suivant retour:
@{@"result":@"說"}
. Notez que leresult
clé contient une chaîne de caractères avec un caractère unique, qui je suppose est ce que vous voulez.BTW: Dans l'avenir, je vous suggère de copier-coller de sortie dans votre question plutôt que de le transcrire à la main. Elle permettra d'éviter plusieurs inutile séries de corrections et de la confusion.
OriginalL'auteur Marcelo Cantos