2013-04-16 10 views
5
{"User":{"id":"42","name":"martin"}} 

Konvertieren meiner NSData zu NSString gibt diese JSON, die in vollem Umfang gültig, aber die Methode scheint:NSJSONSerialization Rückkehr null

[NSJSONSerialization isValidJSONObject:data] 

sagt dieses Objekt keine gültige JSON ist.

Kann jemand auf einen Fehler hinweisen, den ich gemacht habe, oder sich einen Grund vorstellen, warum das passiert?

Antwort

9

Ich wette, dass zum Beispiel ein nicht druckbares Zeichen in der Zeichenfolge enthalten ist, wodurch die Daten ungültig werden.

Deklarieren eine NSError* error Variable [NSJSONSerialization JSONObjectWithData:data options:0 error:&error] Methode rufen Sie dann zu versuchen, die JSON zu konvertieren: offensichtlich, wenn Ihre Daten als ungültig betrachtet wird, wird es nil zurück, aber zumindest werden Sie die Beschreibung von dem, was danach in dem NSError* error Variable falsch ist.

NSData* data = ... // your data 
NSError* error = nil; // Declare a variable to hold the error upon return 
id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; // Try to convert your data 
NSLog(@"obj: %@ ; error: %@", error); // Log the decoded object, and the error if any 
+0

Ich legte den Fehler und es sagte null, irgendwie funktionierte es plötzlich ... seltsam ... irgendwie funktioniert es jetzt! – Alex

+0

Ich hatte das gleiche Problem und ich bekomme: '(Unescaped Steuerzeichen um Zeichen 43579.) UserInfo = 0x9b78e30 {NSDebugDescription = Unescaped Steuerzeichen um Zeichen 43579.}'. Wie repariere ich es? – marciokoko

+0

Korrigieren Sie Ihre JSON-Originaldaten. Ich wette, der JSON, den Sie zu dekodieren versuchen, ist zu Beginn keine gültige JSON-Daten und hat ein ungültiges Zeichen bei Offset 43579, wie der Fehler erklärt. Fügen Sie Ihren JSON in http://jsonlint.org/ ein, um zu prüfen, ob es sich beispielsweise um einen ungültigen oder fehlerhaften JSON handelt. Wenn es kein gültiger JSON ist, müssen Sie es natürlich an der Quelle reparieren _ (fixieren Sie den Inhalt der 'file.json', wenn Sie Ihre' NSData' aus einer solchen Datei lesen, oder korrigieren Sie die von Ihrem WebServer erzeugte Zeichenkette, falls dies der Fall ist ein Web-Service, der diesen JSON zu Ihrer App zurückgibt, in diese 'NSData', etc ...) _ – AliSoftware