2012-09-26 22 views
53

Użyłem tej metody,Jak przekonwertować json danych odcinkach do NSDictionary

NSDictionary *jsonObject=[NSJSONSerialization 
     JSONObjectWithData:jsonData 
        options:NSJSONReadingMutableLeaves 
        error:nil]; 
NSLog(@"jsonObject is %@",jsonObject); 

To drukowania "JSONObject jest pusta".
Czy jest jakiś problem z "error: zero".
Nie używam żadnego adresu URL ani metod połączenia.
Mam plik json i chcę wyświetlić go w tabeli.

+0

Czy sprawdziłeś, że jsonData nie jest zerowy? Możesz chcieć przekazać obiekt NSError do wywołania, jeśli chcesz uzyskać opis błędu. – onnoweb

+1

Można znaleźć odpowiedź tutaj [Jak korzystać NSJSONSerialization] [1] [1]: http://stackoverflow.com/questions/8356842/how-to-use-nsjsonserialization –

+0

@ Ivan Dyachenko: i też zrobiłeś to samo ... "NSError * myerror = nil; następnie" error: & myerror; "nawet wtedy mam zerowy ...... – Rajesh

Odpowiedz

146

spróbuj wykonać następujący kod.

NSError* error; 
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData 
                options:kNilOptions 
                 error:&error]; 

NSArray* latestLoans = [json objectForKey:@"loans"]; 

NSLog(@"loans: %@", latestLoans); 
+4

następnie wpisz adres URL w przeglądarce, a następnie dostaniesz polecenie lub tablicę, a następnie skopiuj wszystkie dane i wklej je w tym linku http://jsonlint.com/ jeśli twój json jest ważny, to pokaże lub jeśli wystąpi jakikolwiek błąd, to pokaże zero. –

+0

możesz podać ten sam kod dla szybkiego języka 3.0. ??? @amitsoni –

-1

Sprawdź this link Jestem pewien, że to ci pomoże. ale to zadziała tylko i powyżej iOS 5. upewnij się, że używasz ios 5 lub wyżej.

+5

Proszę powiedz, dlaczego to pomoże - proszę nie dawać linku – Mark

+0

Zaznacz, jeśli zobaczysz to wtedy dowiesz się, jak on analizuje dane i rozwiąże problem. –

+0

rajesh check th na stronie to ci pomoże .. –

6

Sprawdź swoje dane wejściowe json, czy może to być, że Twój element główny nie jest ani słownikiem, ani tablicą? Dokumentacja mówi, że musisz podać NSJSONReadingAllowFragments jako opcję w tym przypadku.

#import <Foundation/Foundation.h> 

int main(int argc, char *argv[]) { 
    NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init]; 

    NSData *jsonData = [@"{ \"key1\": \"value1\" }" dataUsingEncoding:NSUTF8StringEncoding]; 
    NSDictionary *jsonObject=[NSJSONSerialization 
      JSONObjectWithData:jsonData 
         options:NSJSONReadingMutableLeaves 
         error:nil]; 
    NSLog(@"jsonObject is %@",jsonObject); 

    [p release]; 
} 

wyjściowa:

2012-09-26 16:06:51.610 Untitled[19164:707] jsonObject is { 
    key1 = value1; 
} 
+0

zrobił to samo z br .......... – Rajesh

+0

thanq to działało – Rajesh

8

wszelki wypadek ktoś jest tutaj, aby zobaczyć kod SWIFT:

NSData to NSDictionary

let dictionary:NSDictionary = NSKeyedUnarchiver.unarchiveObjectWithData(jsonData)! as NSDictionary 

NSData to NSString

let resstr = NSString(data: res, encoding: NSUTF8StringEncoding) 
0
NSError* error; 
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; 

To jest po prostu bardziej zwięzła wersja górnego słupka.

Powiązane problemy