2010-03-02 6 views
0

J'ai ajouté l'analyseur JSON à mon projet et j'essaye d'analyser une chaîne JSON. Sur la plupart des chaînes, cela fonctionne comme il se doit, mais parfois ce n'est pas le cas. Ma première pensée a été, que la chaîne JSON n'est pas bien formée, mais je l'ai vérifié avec plusieurs valideurs JSON et ils disent tous que c'est correct. J'ai également vérifié la chaîne pour certains sauts de ligne, mais il n'y en a pas dans la chaîne.JSON Parser error

Ceci est mon code:

// My JSON string 
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 

NSError *error = [[NSError alloc] init]; 

// result is null because of error 
NSDictionary *result = [parser objectWithString:json_string error:&error]; 

Quand je regarde dans le débogueur, je reçois ce qui suit dans ma variable d'erreur:

erreur Domaine = org.brautaset.JSON.ErrorDomain code = 3 UserInfo = 0x5168270 « valeur de l'objet prévu pour les principaux: les éléments »

Cela indique que quelque chose ne va pas avec les éléments de la chaîne, mais comme je l'ai dit au-dessus, J'ai vérifié la chaîne JSON avec plusieurs validateurs et tous disent que c'est ok.

Est-ce que quelqu'un a une idée de ce qui ne va pas?

Merci de votre aide.

+0

Quel analyseur JSON utilisez-vous? Pourriez-vous publier la chaîne JSON qui vous pose problème? – pheelicks

+0

J'utilise le dernier framework JSON de Google: http://code.google.com/p/json-framework/ Ma chaîne JSON est vraiment longue, car c'est un résultat de newsfeed. Je vais essayer de le coller dans mon prochain post. – Dominik

+0

votre chaîne est incomplète, probablement parce qu'elle est trop longue. Peut-être qu'un lien serait mieux? – pheelicks

Répondre

0

Il est difficile de dire, mais de regarder les « éléments » de chaîne JSON est la première partie où les personnages drôles sont utilisés par exemple:

"content":"\u003cp\u003e\u003ca href\u003d 

Peut-être est source de confusion l'analyseur? Ou peut-être que l'encodage est faux?

Que voyez-vous lorsque vous vérifiez la valeur de json_string dans le débogueur? E.g:

NSLog(json_string); 
0

Oui, c'est peut-être le problème. Les caractères comme \ u003c sont des échappements Unicode et proviennent du flux original, donc l'encodage devrait être bon. Y at-il un moyen de les transformer en format compatible json?