2011-12-12 2 views
5

Sto cercando di analizzare una matrice JSON restituito da un'API web RESTful che sembra simile al seguente (utilizzando JSONKit):Analisi dell'array JSON in iOS con JSONKit - array senza tag per ObjectForKey?

[ { "DateCreated" : "/Date(1320296400000)/", 
    "ID" : 1, 
    "Summary" : "Summary 1", 
    "Title" : "Title 1", 
    "URL" : "URL 1" 
    }, 
    { "DateCreated" : "/Date(1320296400000)/", 
    "ID" : 2, 
    "Summary" : "Summary 2", 
    "Title" : "Title 2", 
    "URL" : "URL 2" 
    } 
] 

Il JSON ho lavorato con il passato di solito aveva un elemento padre, per esempio news:{{node1},{node2}}, che mi avrebbe permesso di estrarre quel nodo dalla risposta JSON, in questo modo:

NSString *response = [request responseString]; 
NSDictionary *deserializedData = [response objectFromJSONString]; 
NSArray *arrNews = [deserializedData objectForKey:@"news"]; 

Nel mio JSON, non esista tale nodo, è semplicemente un array di crudo. Come faccio a tirare questo in un NSArray (o qualcosa che posso collegare a un UITableView)?

risposta

10

Dagli sguardi di dati JSON, sembra che il tuo deserializedData dovrebbe già essere un JKArray pieno di JKDictionary oggetti.

Hai provato ad accedervi come un array?

for (NSDictionary * dataDict in deserializedData) { 
    NSString * timeStamp = [dataDict objectForKey:@"DateCreated"]; 
    // and so on 
} 

Questo dovrebbe scorrere attraverso ogni singolo elemento nei dati JSON.

+0

Quindi come fai a sapere che è l'elemento dell'array 0 a cui è interessato? –

+0

Ho aggiornato la mia risposta in modo tale da non accedere ad alcun indice specifico, evitando la confusione di 0. –

1

Una stringa JSON legale può avere, come "contenitore" esterno, una matrice o un dizionario/"oggetto". Il JSON nel tuo campione ha una matrice come "contenitore" esterno. Perfettamente legittimo

Se non sai cosa aspettarti, devi testare l'oggetto per vedere quale è.