2009-05-30 5 views
5

Je suis en train de faire une demande http. Le code ressemble à ceci:Erreur lors de l'utilisation cadre Brautaset JSON dans iphone

NSString *urlString = [NSString stringWithString:@"http://www.foo.se/bartojson.php?venue=47497"]; 


NSLog(@"retain %d urlString %@", [urlString retainCount], urlString); 
    NSURL *url = [NSURL URLWithString:urlString]; 
    [urlString release]; 

    NSString *jsonString = [NSString stringWithContentsOfURL:url]; 
    NSDictionary *httpResult = [jsonString JSONValue]; 

Lorsque vous appelez la page dans un navigateur le résultat ressemble à ceci:

{ "name": "test", "description": "Ceci est un test." , "reviews": [{"grade": "5", "description": "Nice"}, {"grade": "3", "description": "Très bien!"}}}

Mais en l'appelant à partir du code que je reçois ceci:

erreur domaine = code org.brautaset.JSON.ErrorDomain = 3 UserInfo = 0x582640 « Object value attendue pour clés: avis »

il semble y avoir un problème avec les critiques pointant vers un nouveau dictionnaire. Pourriez-vous s'il vous plaît m'aider à comprendre ce message d'erreur.

Répondre

6

Eh bien, je trouve la raison de mon erreur. Les sauts de ligne de fenêtres stupides dans le résultat ont fait échouer l'appel JSONValue. Tout enlevé et alto tout fonctionne comme un charme!

2

J'sais si elle était une faute de frappe, mais votre exemple n'est pas JSON valide, en raison de la virgule suivant « Nice ». JSON n'autorise pas les virgules de fin dans les tableaux ou les dictionnaires ("Objets"). JSON.framework donnerait certainement du fil à retordre à ce sujet.

Par ailleurs, si vous utilisez la version stable actuelle du cadre, il imprime toujours la pile complète de l'échec dans le journal de la console, si vous utilisez les méthodes pratiques. Sinon, vous pouvez demander à l'objet analyseur une trace de pile complète et l'imprimer vous-même.

+0

Salut Stig! Désolé pour la faute de frappe. Il n'y avait rien de mal avec le framework, c'était le serveur qui renvoyait les fenêtres cachées. – jakob