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

Konwersja mój NSData do NSString zwraca ten JSON, który wydaje się całkowicie poprawny, jednak metoda:NSJSONSerialization powrocie nil

[NSJSONSerialization isValidJSONObject:data] 

mówi to nie jest ważny obiekt JSON.

Czy ktoś mógłby wskazać na błąd, który popełniłem, lub wymyślić przyczynę takiego stanu rzeczy?

Odpowiedz

9

Założę się, że w łańcuchu jest na przykład znak niedrukowalny, co powoduje, że dane są nieważne.

zadeklarować zmienną NSError* error następnie wywołać [NSJSONSerialization JSONObjectWithData:data options:0 error:&error] sposób, aby spróbować przekształcić JSON: oczywiście, jeśli dane są uznane za nieważne, zwróci nil, ale przynajmniej będziesz miał opis tego, co się dzieje w zmiennej po tym NSError* error.

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

umieścić błąd i powiedział, null, jakoś nagle pracował ... dziwne ... byle jak to działa teraz! – Alex

+0

Miałem ten sam problem i otrzymałem: '(Niepowtarzalny znak kontrolny wokół znaku 43579.) UserInfo = 0x9b78e30 {NSDebugDescription = Niepowtarzalny znak kontrolny wokół znaku 43579.}'. Jak mogę to naprawić? – marciokoko

+0

Napraw swoje oryginalne dane JSON. Założę się, że JSON, który próbujesz odszyfrować, nie jest prawidłowym danymi JSON na początku i ma nieprawidłowy znak w offsecie 43579, jak wyjaśnia błąd. Wklej swój JSON do http://jsonlint.org/, aby sprawdzić, czy jest on nieprawidłowy lub źle sformułowany JSON na przykład. Jeśli nie jest to poprawny JSON, oczywiście musisz go naprawić w źródle _ (napraw zawartość pliku 'plik.json' jeśli czytasz' NSData' z takiego pliku lub napraw łańcuch wygenerowany przez twój WebServer jeśli jest usługa sieci Web, która zwraca ten JSON do twojej aplikacji do tego 'NSData', etc ...) _ – AliSoftware