NSURLConnection:JSON文本不是以数组或对象开头,而是选项允许未设置片段

时间:2014-12-17 08:52:10

标签: ios objective-c json xcode nsurlconnection

我从NSURLConnection connectionDidFinishLoading

收到以下错误
  

“操作无法完成。(Cocoa error 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":""
      }
   ]
}

我已尝试过stackOverflow中的所有解决方案,但仍然是静脉。

3 个答案:

答案 0 :(得分:26)

将选项值设置为NSJSONReadingAllowFragments而不是kNilOptions 我已经测试了你的JSON将它带到了一个本地文件

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

答案 1 :(得分:1)

NSLog您获取的实际数据,而不是字符串,并检查第一个字节。 JSONSerializer没有找到{或[作为第一个字符,所以你可能有一些零字节,或字节顺序标记,或者其他一些不可见的字符。

答案 2 :(得分:0)

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

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

  1. 我第一次收到的回复格式不正确。请记住,格式必须始终以" ["或" {"。所以这是从后端纠正的。
  2. 其次,我试图点击一个带有“" video"其中有http://www.xyz/video123.com,与姓名视频相关的网站已在我们办公室被屏蔽。因此,请确保您使用的网络没有此类限制。 邮递员会向您显示正确的答案,但在设备或模拟器中您将遇到问题。
  3. 请确保这些案件。