web-dev-qa-db-fra.com

NSURLConnection: le texte JSON n'a pas commencé avec un tableau ou un objet et l'option permettant d'autoriser les fragments non définis

J'obtiens l'erreur suivante de NSURLConnection connectionDidFinishLoading

"L'opération n'a pas pu aboutir. (Erreur de cacao 3840.)" (Le texte JSON N'a pas commencé par un tableau ou un objet, et l'option n'autorisait pas les fragments. ne démarre pas avec tableau ou objet et option pour autoriser les fragments non définis}

J'ai utilisé le code suivant:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
    NSError *error;
    id json = [NSJSONSerialization JSONObjectWithData:_urlData options:kNilOptions error:&error];

    if (error) {
        NSLog(@"Loading Error = %@",error);
    }
}

Ce qui suit est ma réponse json:

{  
   "result":"success",
   "details":[  
      {  
         "id":"11531",
         "user_name":"",
         "fullname":"aa",
         "email_address":"aa",
         "user_type":"a",
         "server":"",
         "server_email":"",
         "server_password":"",
         "password":"0cc175b9c0f1b6a831c399e269772661",
         "clean_password":"a",
         "gender":"",
         "ceo_name":"",
         "ceo_picture":"",
         "ceo_contact":"",
         "ceo_contact_pic":"",
         "company_name":"a",
         "freight_company_name":"",
         "freight_company_email":"",
         "company_url":"11531",
         "company_keyword":"",
         "company_description":"",
         "address":"",
         "province":"",
         "postal_code":"",
         "phone_number":"",
         "fax_number":"",
         "website":"",
         "city":"",
         "b_category":"",
         "main_products":"",
         "cellphone":"a",
         "country":"0",
         "states":"",
         "company_status":"1",
         "joindate":"0",
         "varificationcode":"",
         "activation_status":"1",
         "new_email":"",
         "email_activation_status":"",
         "facebook_url":"",
         "Twitter_url":"",
         "company_update_status":"0",
         "last_access_date":"0000-00-00",
         "ip_address":"",
         "ip_block":"0",
         "user_id":null,
         "company_id":null,
         "video_url":"",
         "oauth_uid":"",
         "oauth_provider":"",
         "get_color":"",
         "comp_name_size":"13",
         "member_type":"",
         "mark_status":"1",
         "ip_address_intension":"",
         "fbId":"",
         "twitterId":"",
         "profile_picture":"",
         "device_token":""
      }
   ]
}

J'ai essayé toutes les solutions dans stackOverflow mais dans la veine.

20
NITHIN S

Définissez la valeur de l'option sur NSJSONReadingAllowFragments au lieu de kNilOptions J'ai testé votre code JSON en le prenant dans un fichier local. 

id json = [NSJSONSerialization JSONObjectWithData:contentOfLocalFile
                                                options:NSJSONReadingAllowFragments
                                                  error:&deserializingError];
26
Janmenjaya

NSLog les données réelles que vous obtenez, pas la chaîne et vérifiez les premiers octets. JSONSerializer n'a pas trouvé un {ou un [comme premier caractère. Vous avez donc probablement des octets de zéro, des marques d'ordre des octets ou d'autres caractères invisibles de ce type. 

1
gnasher729

En plus de la réponse de Janmenjaya, j'aimerais ajouter: -

J'ai fait face à ce problème deux fois dans différentes API. Le problème à chaque fois que j'avais était

  1. La première fois que la réponse que je recevais n'était pas dans le bon format. Rappelez-vous que le format doit toujours commencer par un "[" ou "{". Donc, cela a été corrigé à partir du backend.
  2. Deuxièmement, j'essayais de trouver une URL qui contenait une "vidéo" de Word par exemple http://www.xyz/video123.com et des sites Web liés à la vidéo nommée ont été bloqués dans notre bureau. Veillez donc à ce que le réseau que vous utilisez ne soit pas soumis à de telles restrictions ..__Postman vous indiquera la réponse correcte, mais vous rencontrerez des problèmes avec les appareils ou les simulateurs.

S'il vous plaît assurer ces cas aussi.

0
Kunal Gupta