NSURLConnection: el text JSON no comenzó con array u object y la opción para permitir fragments no establecidos

Obtengo el siguiente error de NSURLConnection connectionDidFinishLoading

"La operación no pudo completarse (Cocoa error 3840.)" (el text JSON no comenzó con array u object y la opción para permitir fragments no configurados) UserInfo = 0x7b71dbb0 {NSDebugDescription = El text JSON no comenzó con arreglo u object y la opción para permitir fragments no configurados.}

Utilicé el siguiente código:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection { NSError *error; id json = [NSJSONSerialization JSONObjectWithData:_urlData options:kNilOptions error:&error]; if (error) { NSLog(@"Loading Error = %@",error); } } 

La siguiente es mi respuesta 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":"" } ] } 

He intentado todas las soluciones en stackOverflow pero en vena.

Establezca el valor de la opción en NSJSONReadingAllowFragments lugar de kNilOptions He probado su JSON tomándola en un file local

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

NSlog los datos reales que está recibiendo, no la cadena, y compruebe los primeros bytes. JSONSerializer no encontró un {o un [como el primer carácter, por lo que probablemente tenga algunos cero bytes, o marcas de order de bytes, u otros caracteres invisibles como ese.

Además de la respuesta de Janmenjaya, quisiera agregar:

Me he enfrentado a este problema dos veces en distintas API. El problema cada vez que tuve fue

  1. La primera vez que la respuesta que recibí no estaba en el formatting correcto. Recuerde que el formatting siempre debe comenzar con un "[" o "{". Entonces, se corrigió desde el backend.
  2. En segundo lugar, intentaba pegar una URL que contenía una palabra "video" para ex http://www.xyz/video123.com y se habían bloqueado sitios web relacionados con el nombre del video en nuestra oficina. Por lo tanto, asegúrese de que la networking que está utilizando no tenga tales restricciones. Postman le mostrará la respuesta correcta, pero en dispositivos o simuladores enfrentará problemas.

Asegúrate también de estos casos.