2012-09-26 23 views
53

ho usato questo metodo,Come convertire JSON dati serializzati al NSDictionary

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

E 'la stampa "JsonObject è nullo".
C'è qualche problema con "error: nil".
Non sto usando alcun url o metodi di connessione.
Ho un file JSON e voglio visualizzarlo in una tabella.

+0

Hai controllato che jsonData non sia nullo? Si consiglia di passare un oggetto NSError alla chiamata se si desidera ottenere una descrizione di errore. – onnoweb

+1

Si possono trovare risposta qui [Come usare NSJSONSerialization] [1] [1]: http://stackoverflow.com/questions/8356842/how-to-use-nsjsonserialization –

+0

@ Ivan Dyachenko: i anche io ho fatto la stessa cosa ..... "NSError * myerror = nil; quindi" error: & myerror; "anche allora ho ottenuto nulla ...... – Rajesh

risposta

146

Si prega di provare il seguente codice.

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

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

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

quindi inserisci l'url nel browser e poi otterrai dict o array, quindi copia tutti i dati e incollalo in questo link http://jsonlint.com/ se il tuo json è valido allora verrà mostrato o se c'è qualche errore allora mostrerà null. –

+0

puoi fornirmi lo stesso codice per la lingua swift 3.0. ??? @amitsoni –

-1

Verifica this link sono sicuro che questo ti aiuterà. ma questo funzionerà solo e sopra ios 5. assicurati di utilizzare ios 5 o successivo.

+5

Si prega di dire perché questo aiuterà - si prega di non dare solo un collegamento – Mark

+0

Mark se vedrete questo poi verrai a sapere che come sta analizzando i dati e risolverà il problema. –

+0

rajesh check th al sito questo ti aiuterà .. –

6

Verificare l'input JSON, potrebbe essere che il tuo elemento principale non è né un dizionario né un array? La documentazione dice che devi specificare NSJSONReadingAllowFragments come opzione in questo caso.

#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]; 
} 

uscita:

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

ha fatto la stessa cosa bro .......... – Rajesh

+0

thanq ha funzionato – Rajesh

8

Solo nel caso qualcuno è qui per vedere il codice 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]; 

Questa è solo una versione più sintetica del post alto.

Problemi correlati