2012-02-10 3 views
1

L'alimentation de l'analyseur json avec les données suivantes: http://mapadosradares.com.br/api/get_initial_load génère l'erreur suivante: Le jeton 'début du tableau' n'est pas attendu après le tableau le plus externe ou objecterajson-framework - Jeton 'début de tableau' non attendu après le tableau ou l'objet le plus externe

Voici mon code:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    NSLog(@"Connection didReceiveData of length: %u", data.length); 

    // Printing the received data 
    size_t length = [data length]; 
    unsigned char aBuffer[length]; 
    [data getBytes:aBuffer length:length]; 
    //aBuffer[length - 1] = 0; 
    NSLog(@"\n\n\n\n%s\n\n\n\n", aBuffer); 

    SBJsonStreamParserStatus status = [parser parse:data]; 

    if (status == SBJsonStreamParserError) { 
     NSLog(@"Parser error: %@", parser.error); 

    } else if (status == SBJsonStreamParserWaitingForData) { 
     NSLog(@"Parser waiting for more data"); 
    } 
} 

Pour autant que je peux dire à la JSON est parfaitement bien. Des pensées?

MISE À JOUR:

Voici l'analyseur initalization:

- (void) getInitialLoad 
{ 
    adapter = [[SBJsonStreamParserAdapter alloc] init]; 
    parser = [[SBJsonStreamParser alloc] init]; 

    adapter.delegate = self; 
    parser.delegate = adapter; 

    NSString *url = @"http://mapadosradares.com.br/api/get_initial_load"; 
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] 
              cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 
    connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
} 

Répondre

2

Êtes-vous correctement l'analyseur en cours d'initialisation entre les demandes? Vous n'avez pas montré votre code, mais il semble que ce serait une erreur raisonnable de vous attendre si vous avez exécuté deux appels successifs au flux via l'analyseur. Par ailleurs, j'ai couru la sortie de flux à travers l'excellent parser JSON au http://jsonlint.com et il semble que ce soit bien.

+0

J'ai mis à jour ma question avec l'initialisation de l'analyseur. L'autre requête est gérée par un analyseur différent. Peuvent-ils partager l'état? – Raphael

+0

Est-ce le seul endroit où vous initialisez et déclenchez un NSURLConnection dont le délégué est cet objet? Essayez de modifier votre instruction de journal au début de la connexion: didReceiveData: pour imprimer l'adresse de l'objet de connexion; Si vous voyez plus d'une connexion parler à votre analyseur, c'est probablement le problème. –

+0

Je vais essayer mais je ne crois pas que ce soit la cause puisque les données s'impriment correctement. – Raphael

Questions connexes