Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSURLConnection : JSON text did not start with array or object and option to allow fragments not set

I get the following error from NSURLConnection connectionDidFinishLoading

"The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x7b71dbb0 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

I used the following code :

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

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

The following is my json response :

{  
   "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":""
      }
   ]
}

I have tried all the solutions in stackOverflow but in vein.

like image 565
NITHIN S Avatar asked Dec 17 '14 08:12

NITHIN S


2 Answers

Set option value to NSJSONReadingAllowFragments instead of kNilOptions I have tested your JSON taking it in a local file

id json = [NSJSONSerialization JSONObjectWithData:contentOfLocalFile
                                                options:NSJSONReadingAllowFragments
                                                  error:&deserializingError];
like image 70
Janmenjaya Avatar answered Nov 18 '22 06:11

Janmenjaya


NSLog the actual data that you are getting, not the string, and check the first bytes. JSONSerializer didn't find a { or a [ as the first character, so you probably have some zero bytes, or byte order marks, or some other invisible characters like that.

like image 1
gnasher729 Avatar answered Nov 18 '22 06:11

gnasher729