J'essaie d'analyser cette structure de données JSON renvoyée à partir d'une URLSession contenant des informations de ressources pour un projet. Malgré de nombreuses approches, je n'arrive pas au niveau dont j'ai besoin pour accéder aux données.Comment analyser une structure de données JSON complexe avec Swift 3
Plus précisément, j'ai besoin d'obtenir l'état du travail pour le rôle de planificateur qui est le r: et l'état qui suit le s: dans le JSON.
Donc je pense que j'ai besoin de parcourir toutes les valeurs pour trouver le statut pour le rôle de planificateur ou est-il un moyen de spécifier que je suis à la recherche de planificateur et directement en mesure de récupérer le statut? Je ne suis pas sûr de savoir comment le traverser pour arriver à ce niveau, l'une des parties intéressantes mais difficiles de ce problème est qu'il y a trois valeurs pour la ressource, donc je ne pense pas qu'une paire de valeurs de clé de dictionnaire soit le bon modèle.
{
"Project": 43,
"definition": [
{
"statusCode": 0,
"entryID": "123",
"Initiatives": [],
"validationCode": "1.0.0"
},
{
"statusCode": 0,
"workProduct": [
{
"task": [
{
"desc": "define project scope",
"hours": 120,
"week": "1",
"resources": [
{
"r": "planner",
"l": "junior",
"s": "open"
},
{
"r": "architect",
"s": "senior",
"s": "filled"
}
],
"managerCode": "1285",
"teamCode": [
"413"
]
}
],
"scope": "project design"
}
],
"entryID": "123",
"validationCode": "1.0.0"
}
]
}
J'ai essayé plusieurs solutions qui tentent d'y accéder, en fonction de diverses réponses SO et ce article:
je peux imprimer l'objet JSON comme une chaîne:
let stringData = String(data: projectInformation!, encoding: String.Encoding.utf8)
print(stringData as Any) //JSONSerialization
Mais suis pas sûr que ce serait un moyen optimal de récupérer les valeurs pour cela.
Appréciez vos suggestions.
Merci - donc je continue à ajouter le dictionnaire où je vois un [ et un tableau où je vois un {? Est-ce une coïncidence que les données à l'intérieur des ressources ne correspondent plus à l'ensemble de mon code? Par exemple, remarquez que senior est maintenant avec architecte et a un code de s au lieu de l? Je pense que c'est un problème avec l'utilisation du dictionnaire -whcih ne garantit pas l'ordre, mais les paires de valeurs clés au niveau le plus interne pour les ressources ont perdu leur intégrité. Est-ce que tu vois ce que je veux dire? Merci – Jazzmine
[] est un tableau, {} est un dictionnaire. Et vous avez raison, les dictionnaires ne sont pas ordonnés. Je vous recommande de lire plus sur NSJsonSerialization et de trouver plus d'exemples sur la façon de l'utiliser. – RaffAl