Valeur non valide environ le caractère 0, NSJSONSerialization
Je fais un get à partir de mon serveur et je reçois une réponse valide:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
//Append the new data to the instance variable you declared
//[_responseData appendData:data];
NSString *responseBody = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",responseBody);
if(data != NULL)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
NSError *error = nil;
//NSMutableArray *jsonArray = [[CJSONDeserializer deserializer] deserializeAsArray:[responseBody dataUsingEncoding:NSUTF8StringEncoding] error:&error];
NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
if (error)
{
NSLog(@"JSONObjectWithData error: %@", error);
[delegate onErrorGetArrayFromServer];
}
else
[self parseJSON:jsonArray];
});
}
else
{
if([delegate respondsToSelector:@selector(onErrorGetArrayFromServer)])
{
[delegate onErrorGetArrayFromServer];
}
}
}
La réponse est, comme:
[{"id":"37",
"id_estado":"1",
"id_categoria":"1",
"nombre":"fer",
"email":"[email protected]",
"fecha":"2014-07-16 11:25:00",
"observaciones":"as dasd asdasd sasd",
"latitud":"37.619636",
"longitud":"-4.318449",
"foto":"images\/default.jpg"},
{"id":"36",
"id_estado":"1",
"id_categoria":"6",
"nombre":"Fernando",
"email":"",
"fecha":"2014-07-16 10:32:45",
"observaciones":"que",
"latitud":"37.6178690439634",
"longitud":"-4.3238141387701",
"foto":"images\/default.jpg"}]
Il me lance le message d'erreur:
JSONObjectWithData error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x9e0f610 {NSDebugDescription=Invalid value around character 0.}
J'ai essayé avec une autre bibliothèque (CJSON) et il me jeter de l'erreur:
JSONObjectWithData error: Error Domain=kJSONScannerErrorDomain Code=-202 "Could not scan array. Could not scan a value." UserInfo=0xa15c0e0 {snippet=!HERE>![{"id":"37","id_esta, location=0, NSLocalizedDescription=Could not scan array. Could not scan a value., character=0, line=0}
Mon serveur est un RESTE de serveur et pour mon Android application fonctionne bien.
_SOLVED_
Grâce à @Himanshu Joshi:
Pourquoi êtes-vous l'analyse des données en didReceiveData:? Les données ne sont pas totalement téléchargé, vous devrez ajouter les données. Analyser les données en connectionDidFinishLoading: délégué de la méthode
J'ai analysé les données dans connectionDidFinishLoading:
et tout aller bien.
Ressemble à ordures de données avant l'ouverture '['. NSLog la NSData que vous avez reçu et de nous montrer la première douzaine d'octets.
[{"id":"37","id_estado":"1","id_categoria":...
Pourquoi êtes-vous l'analyse des données en
J'aime man u, j'ai perdu ma matinée pour cette stupide erreur 😀
Ce que vous avez saisi a été caractères. Pas d'octets. Je peux voir si les octets sont mauvais. Je ne peux pas voir si les caractères sont mal.
[{"id":"37","id_estado":"1","id_categoria":...
Pourquoi êtes-vous l'analyse des données en
didReceiveData:
? Les données ne sont pas totalement téléchargé, vous devrez ajouter les données. Analyser les données en connectionDidFinishLoading:
méthode du déléguéJ'aime man u, j'ai perdu ma matinée pour cette stupide erreur 😀
Ce que vous avez saisi a été caractères. Pas d'octets. Je peux voir si les octets sont mauvais. Je ne peux pas voir si les caractères sont mal.
OriginalL'auteur | 2014-07-17
Vous devez vous connecter pour publier un commentaire.
J'ai connu le même problème, mais c'est parce que mon URL n'est pas correcte.
La réponse doit être vérifié avant de vous parser le JSON. Il pourrait être vous dire qu'il n'a pas été trouvé.
À ce stade, les données peuvent en fait contenir une erreur 404 page HTML.
- Je utiliser ces méthodes de débogage, et le plus simple des méthodes pour traiter la demande web:
OriginalL'auteur GilesDMiddleton
Votre JSON a un espace blanc avant que les données:
Vérifier votre serveur.
NSURLConnectionDelegate
protocole.OriginalL'auteur elliotrock