ios objective-c json xcode nsurlconnection

ios - NSURLConnection: el texto JSON no comenzó con la matriz o el objeto y la opción para permitir que los fragmentos no se configuren



objective-c xcode (3)

Obtengo el siguiente error de NSURLConnection connectionDidFinishLoading

"La operación no pudo completarse. (Error de Cocoa 3840.)" (El texto JSON no comenzó con la matriz o el objeto y la opción para permitir que los fragmentos no se configuren). y la opción para permitir que los fragmentos no se establezcan.}

Use 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.


Además de la respuesta de Janmenjaya, me gustaría agregar:

He enfrentado este problema dos veces en diferentes API''s. El problema cada vez que tuve fue

  1. La primera vez que la respuesta que estaba recibiendo no estaba en el formato correcto. Recuerde que el formato siempre debe comenzar con "[" o "{". Así que eso fue corregido desde el backend.
  2. En segundo lugar, estaba intentando acceder a una URL que contenía una palabra "video", por ejemplo, http://www.xyz/video123.com y los sitios web relacionados con el nombre del video se han bloqueado en nuestra oficina. Por lo tanto, asegúrese de que la red que está utilizando no tenga tales restricciones. Postman te mostrará la respuesta correcta, pero en los dispositivos o simuladores tendrás problemas.

Por favor, asegúrese de estos casos también.


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

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


NS Registre los datos reales que está obteniendo, no la cadena, y verifique los primeros bytes. JSONSerializer no encontró un {o un [como primer carácter, por lo que probablemente tenga algunos bytes de cero, marcas de orden de bytes, u otros caracteres invisibles como ese.