NSURLConnection:JSON文本没有以数组或对象和选项开始,以允许片段没有设置

我从NSURLConnection的connectionDidFinishLoading中得到以下错误

“(cocoa错误3840.)”(JSON文本没有开始与数组或对象和选项,以允许片段没有设置。)UserInfo = 0x7b71dbb0 {NSDebugDescription = JSON文本没有开始数组或对象和允许片段不能设置的选项。}

我使用了下面的代码:

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

以下是我的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":"" } ] } 

我尝试了所有的解决scheme在stackoverflow但静脉。

设置选项值NSJSONReadingAllowFragments而不是kNilOptions我已经testing了您的JSON把它放在一个本地文件

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

NSLoglogging你得到的实际数据,而不是string,并检查第一个字节。 JSONSerializer没有find一个{或一个[作为第一个字符,所以你可能有一些零字节,或字节顺序标记,或像这样的一些其他不可见的字符。

除了Janmenjaya的回答,我想补充一点:

我在不同的API中遇到了这个问题两次。 我每次都遇到这个问题

  1. 我第一次收到的回复的格式不正确。 记住格式必须始终以“[”或“{”开始。 所以这是从后端纠正。
  2. 其次,我试图打到一个url,其中有一个“video”的前例http://www.xyz/video123.com和网站相关的名字video已被阻止在我们的办公室。 因此请确保您使用的networking没有此类限制。 邮差会告诉你正确的答案,但在设备或模拟器,你将面临的问题。

请确保这些情况。