Sto lavorando con l'API Weather Underground per creare un'app e ho riscontrato un problema durante l'analisi del blocco relativo agli avvisi gravi. Il JSON utilizza coppie chiave-valore che hanno coppie di valori secondari - che non sono stati un problema per me, dal momento che posso escludere NSDictionaries successivi da questi - ma la voce per gli avvisi gravi si è rivelata problematica. Vedi sotto:Analisi di un array JSON in un NSDictionary
"alerts": [
{
"type": "WAT",
"description": "Flash Flood Watch",
"date": "3:13 PM EDT on April 28, 2012",
"date_epoch": "1335640380",
"expires": "8:00 AM EDT on April 29, 2012",
"expires_epoch": "1335700800",
"message": "\u000A...Flash Flood Watch in effect through Sunday morning...\u000A\u000AThe National Weather Service in Charleston has issued a\u000A\u000A* Flash Flood Watch for portions of northeast Kentucky... (Note: I trimmed this for length's sake),
"phenomena": "FF",
"significance": "A"
}
]
Gli "avvisi" coppia si differenzia dagli altri che sono stato in grado di analizzare perché ha questo [] staffa che circonda i sub-valori e non sono sicuro di come cancellare così Posso accedere ai sottovalori. Negli altri esempi che sono stato in grado di analizzare, ha solo le parentesi {} e non entrambe le parentesi {} e []. Per riferimento, le parentesi sono sempre presenti - anche quando non ci sono avvisi di maltempo severi ... in quel caso la coppia "avvisi" restituisce le parentesi [] senza nessuna sottoclasse presente.
C'è un modo per rimuovere le parentesi [] dal NSDictionary o altrimenti ignorarle? Tutto il consiglio sarebbe apprezzato!
Per riferimento e la risoluzione dei problemi, ecco come sto analizzando il resto del documento JSON con successo:
1) Creazione di un NSDictionary dalla JSON grezzo
//Process Weather Call
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
2) Create dizionari successivi per coppie json annidate
NSDictionary *current_observation = [json objectForKey:@"current_observation"];
3) Assegnare valori
NSString* weather;
weather = [current_observation objectForKey:@"weather"];
Quindi il risultato finale sarebbe una stringa che dice "Parzialmente nuvoloso" o qualcosa del genere, insieme a numerosi valori meteorologici correlati che non ho mostrato. Queste analisi vengono eseguite correttamente poiché hanno solo le parentesi di ambito {} e non le parentesi [].
Ovviamente, un array!Quelle parentesi dovrebbero averlo dato via ... Credo di aver lavorato troppo a lungo oggi. : p In ogni caso ciò ha senso anche nel contesto degli avvisi: possono esserci più avvisi in un dato momento, quindi ci dovrebbe essere un modo per gestirli nell'API. Ci provo, grazie per il vostro aiuto! –