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