wake-up-neo.net

NSURLConnection: JSON-Text begann nicht mit Array oder Objekt und Option, um Fragmente nicht zulassen zu lassen

Ich erhalte den folgenden Fehler von NSURLConnection connectionDidFinishLoading

"Die Operation konnte nicht abgeschlossen werden. (Cocoa-Fehler 3840.)" (JSON-Text Begann nicht mit Array oder Objekt und Option, um Fragmente nicht zuzulassen Set.) UserInfo = 0x7b71dbb0 {NSDebugDescription = JSON-Text tat nicht anfangen mit Array oder Objekt und Option, um Fragmente nicht zulassen zu lassen.}

Ich habe folgenden Code verwendet:

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

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

Folgendes ist meine Antwort von 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":""
      }
   ]
}

Ich habe alle Lösungen in stackOverflow ausprobiert.

20
NITHIN S

Setzen Sie den Optionswert auf NSJSONReadingAllowFragments anstelle von kNilOptions Ich habe Ihren JSON-Test in einer lokalen Datei getestet 

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

NSLog die tatsächlichen Daten, die Sie erhalten, nicht die Zeichenfolge, und überprüfen Sie die ersten Bytes. JSONSerializer hat kein {oder a [als erstes Zeichen gefunden, daher haben Sie wahrscheinlich einige Null-Bytes oder Bytereihenfolgen oder andere unsichtbare Zeichen wie diese. 

1
gnasher729

Zusätzlich zu Janmenjayas Antwort möchte ich hinzufügen: -

Ich habe dieses Problem zweimal in verschiedenen APIs gesehen. Das Problem, das ich jedes Mal hatte, war

  1. Zum ersten Mal war die Antwort, die ich erhielt, nicht im richtigen Format. Denken Sie daran, dass das Format immer mit einem "[" oder "{" beginnen muss. Das wurde also vom Backend korrigiert.
  2. Zweitens habe ich versucht, eine URL zu finden, die ein Word- "Video" für Ex http://www.xyz/video123.com enthielt, und Websites, die mit dem Namen Video in Verbindung stehen, wurden in unserem Büro blockiert. Stellen Sie daher sicher, dass für das von Ihnen verwendete Netzwerk keine derartigen Einschränkungen gelten. Der Postbote zeigt Ihnen die richtige Antwort. Bei Geräten oder Simulatoren treten jedoch Probleme auf.

Bitte stellen Sie auch diese Fälle sicher.

0
Kunal Gupta