L'analyse d'un tableau JSON dans un NSDictionary
Je travaille avec le Weather Underground API pour réaliser une application et j'ai frappé un hic, lors de l'analyse du bloc relatif à sévère des alertes. Le JSON utilise des paires clé-valeur qui ont des sous paires clé-valeur -- qui n'a pas été un problème pour moi, car je peux effectuer par la suite des NSDictionaries de ceux -- mais l'entrée grave des alertes s'est avérée problématique. Voir ci-dessous:
"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"
}
]
Les "alertes" de la paire se distingue des autres je ai été en mesure d'analyser parce qu'il a cette [ ] support entourant le sous-valeurs et je ne suis pas sûr de la façon de l'effacer afin que je puisse accéder à la subvalues. Dans les autres exemples que j'ai été en mesure d'analyser, il dispose seulement d'un { } crochets, et non pas les deux les { } et entre crochets []. Pour référence, les crochets sont toujours présents, même quand il n'y a pas de graves alertes météo... en l'occurrence la "alertes" paire renvoie les crochets [ ] sans sous-paires présent.
Est il possible que je peux enlever les crochets [ ] à partir de la NSDictionary, ou sinon de les ignorer? Tout conseil serait apprécié!
De référence et d'aide pour le dépannage, voici comment je suis de l'analyse du reste du document JSON avec succès:
1) Créer un NSDictionary de la crue JSON
//Process Weather Call
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
2) Créer des dictionnaires imbriqués json paires
NSDictionary *current_observation = [json objectForKey:@"current_observation"];
3) Affecter des valeurs
NSString* weather;
weather = [current_observation objectForKey:@"weather"];
De sorte que le résultat final serait une chaîne qui dit "Partiellement Nuageux" ou quelque chose, avec de nombreux temps des valeurs que je n'ai pas montré. Ces analyser avec succès car ils ont seulement le champ d'application des crochets { }, et pas les crochets [].
OriginalL'auteur Anthony Neace | 2012-04-28
Vous devez vous connecter pour publier un commentaire.
Les consoles de données Json il y a dans un tableau. Vous pouvez l'analyser comme suit
maintenant, vous devriez faire une boucle par toutes les alertes et les analyser (dans votre cas, c'est seulement 1, mais il pourrait être plus dans une autre chaîne json):
OriginalL'auteur Lefteris
Ok, j'ai eu de travail-et je voulais donner un exemple ici parce que j'ai fini par avoir à appuyer sur les conseils de @Lefteris a donné pour qu'il fonctionne.
J'ai fini par passer le tableau json d'abord comme un NSArray, et puis je me suis converti en un NSDictionary avec le premier élément du tableau. Tout par la suite travaillé comme @Lefteris décrit.
Donc, à la fin, voici ce que j'ai:
Ce je me levai et avec un seul tableau itérer -- se passent, je devrais être en mesure de simplement parcourir le tableau car je sais que le comte et la poignée supplémentaire alertes. Merci encore pour l'aide!
Désolé? A bien fonctionné pour moi à l'époque. Il semble suspect pour moi que personne n'a souligné un problème avec 10k vues et 2 ans ont passé. Êtes-vous d'utiliser la même version d'iOS et la même (ou comparable) les données que j'ai été? Aussi, l'examen de l'historique de l'édition de Lefteris' réponse: le code a changé l'année dernière donc, quelque chose peut très bien avoir changé avec les nouvelles versions. Je ne pouvais vraiment pas vous dire que je ne travaille pas avec iOS plus.
OriginalL'auteur Anthony Neace