IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Parser deux tableaux JSON imbriqués


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Etudiante
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut Parser deux tableaux JSON imbriqués
    Bonjour,
    Je cherche à parser ce fichier json . Je veux extraire la valeur de distance:
    {
    "Destination_addresses": [
    "1600 Amphitheatre Parkway, Mountain View, Californie 94043, Etats-Unis»,
    «1159 North Avenue Rengstorff, Mountain View, Californie 94043, Etats-Unis»,
    "1431 Plymouth Street, Mountain View, Californie 94043, Etats-Unis»,
    "1435 Plymouth Street, Mountain View, Californie 94043, Etats-Unis»,
    "1380 Pear Avenue, Mountain View, Californie 94043, Etats-Unis»,
    "1432-1498 Plymouth Street, Mountain View, Californie 94043, Etats-Unis»,
    "1036 Avenue Rengstorff Nord, Mountain View, Californie 94043, Etats-Unis»,
    "2083 Old Middlefield Way, Mountain View, Californie 94043, Etats-Unis»,
    "Creek Trail Permanente, Mountain View, Californie 94043, Etats-Unis»,
    "Mountain View, Californie 94043, Etats-Unis»,
    «2960 North Boulevard Shoreline, Mountain View, Californie 94043, Etats-Unis»,
    "2083 Old Middlefield Way, Mountain View, Californie 94043, Etats-Unis»,
    "1435 Plymouth Street, Mountain View, Californie 94043, Etats-Unis»,
    "2043-2087 débarquements Drive, Mountain View, Californie 94043, Etats-Unis»,
    «1400 Boulevard North Shoreline, Mountain View, Californie 94043, Etats-Unis»,
    "1352-1370 poire Avenue, Mountain View, Californie 94043, Etats-Unis»,
    "2400 Charleston Road, Mountain View, Californie 94043, Etats-Unis»,
    "2135 Old Middlefield Way, Mountain View, Californie 94043, Etats-Unis»,
    «1674 North Boulevard Shoreline, Mountain View, Californie 94043, Etats-Unis»,
    «1005 North Boulevard Shoreline, Mountain View, Californie 94043, Etats-Unis"
    ],
    "Origin_addresses": [
    "1600 Amphitheatre Parkway, Mountain View, Californie 94043, Etats-Unis"
    ],
    «Lignes»: [
    {
    "Éléments": [
    {
    "Distance": {
    "Moins": "1 m",
    "Value": 0
    },
    "Durée": {
    "Text": "1 minute",
    "Value": 0
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,8 km",
    "Value": 1764
    },
    "Durée": {
    "Text": «22 minutes»,
    "Value": 1321
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,1 km",
    "Value": 1095
    },
    "Durée": {
    «Texte»: «14 minutes»,
    "Value": 814
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,1 km",
    "Value": 1058
    },
    "Durée": {
    «Texte»: «13 minutes»,
    "Value": 787
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,3 km",
    "Value": 1326
    },
    "Durée": {
    «Texte»: «16 minutes»,
    "Value": 986
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,0 km",
    "Value": 986
    },
    "Durée": {
    «Texte»: «12 minutes»,
    "Value": 735
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,6 km",
    "Value": 1642
    },
    "Durée": {
    «Texte»: «21 minutes»,
    "Value": 1235
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "2,0 km",
    "Value": 2000
    },
    "Durée": {
    «Texte»: «24 minutes»,
    "Value": 1468
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,3 km",
    "Value": 1291
    },
    "Durée": {
    «Texte»: «16 minutes»,
    "Value": 932
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "0,7 km",
    "Value": 705
    },
    "Durée": {
    «Texte»: «9 minutes»,
    "Value": 511
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,4 km",
    "Value": 1351
    },
    "Durée": {
    «Texte»: «16 minutes»,
    "Value": 975
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "2,0 km",
    "Value": 1971
    },
    "Durée": {
    «Texte»: «24 minutes»,
    "Value": 1447
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,0 km",
    "Value": 1044
    },
    "Durée": {
    «Texte»: «13 minutes»,
    "Value": 777
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "0,8 km",
    "Value": 831
    },
    "Durée": {
    «Texte»: «10 minutes»,
    "Value": 615
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,3 km",
    "Value": 1254
    },
    "Durée": {
    «Texte»: «16 minutes»,
    "Value": 933
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,3 km",
    "Value": 1292
    },
    "Durée": {
    «Texte»: «16 minutes»,
    "Value": 962
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "2,1 km",
    "Value": 2095
    },
    "Durée": {
    «Texte»: «26 minutes»,
    "Value": 1565
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "2,1 km",
    "Value": 2062
    },
    "Durée": {
    «Texte»: «25 minutes»,
    "Value": 1522
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "1,1 km",
    "Value": 1053
    },
    "Durée": {
    «Texte»: «13 minutes»,
    "Value": 782
    },
    "Status": "OK"
    },
    {
    "Distance": {
    "Text": "2,0 km",
    "Value": 1992
    },
    "Durée": {
    «Texte»: «25 minutes»,
    "Value": 1514
    },
    "Status": "OK"
    }
    ]
    }
    ],
    "Status": "OK"
    }
    voila mon code de parsing:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    protected void onPostExecute(JSONObject json) {
     
    						try {
     
    							// récupérer la liste de tous les employés
    							JSONArray results = json.getJSONArray(TAG_elements);
     
     
     
     
    							// parcourir toute la liste des employés
    							for(int i = 0; i < results.length(); i++){
     
    							// récupérer un employé de type JSONObject
    								JSONObject emp = results.getJSONObject(i);
     
    							// récupérer le JSONObject phone qui contient deux items
     
     
     
    								JSONObject dist = emp.getJSONObject(TAG_distance);
     
    							String value = dist.getString(TAG_value);
    							int val_dist=Integer.parseInt(value);
    							myList.get(i).setDistance(val_dist);
    			}
    						}
     
    						catch(JSONException e)
    						{
    							e.printStackTrace();
    						}
    mais dans le logcat ,j'ai cette erreur:
    04-20 17:31:20.711: W/System.err(2042): org.json.JSONException: No value for elements


    Aidez moi s'il vous plait et merci d'avance .

  2. #2
    Membre expérimenté
    Profil pro
    Opération
    Inscrit en
    Décembre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opération

    Informations forums :
    Inscription : Décembre 2012
    Messages : 91
    Par défaut
    Il semble que vous interprétez mal la structure de votre json:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    {
    	"Destination_addresses": [ ...
    	],
    	"Origin_addresses": [ ...
    	],
    	"Lignes": [
    		{
    			"Éléments": [
    				{
    					"Distance": {
    						"Moins": "1 m",
    						"Value": 0
    					},
    					"Durée": {
    						"Text": "1 minute",
    						"Value": 0
    					},
    					"Status": "OK"
    				}, ...
    			]
    		}
    	],
    	"Status": "OK"
    }
    Le premier objet ne contient 4 éléments: 3 array (Destination_addresses, Origin_addresses et Lignes) et 1 string (Status)
    L'array 'Éléments' est contenu dans 'Lignes' d'où l'erreur " No value for elements"

    Faites un test avec le code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    protected void onPostExecute(JSONObject json) {
    	try {
    		// récupérer le tableau lignes
    		JSONArray lignes = json.getJSONArray("lignes");
    		// récupérer le tableau elements
    		JSONObject elements = lignes.getJSONObject(0);
    		JSONArray results = elements.getJSONArray("elements");
    		// parcourir toute la liste des employés
    		for(int i = 0; i < results.length(); i++){
     			// récupérer un element de type JSONObject
    			JSONObject el = results.getJSONObject(i);
    			// récupérer le JSONObject Distance qui contient deux items
    			JSONObject dist = emp.getJSONObject("Distance");
    			String value = dist.getString("value");
    			int val_dist=Integer.parseInt(value);
    			myList.get(i).setDistance(val_dist);
    		}
    	} catch(JSONException e) {
    		e.printStackTrace();
    	}
    }

  3. #3
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Etudiante
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut
    Bonsoir ,
    Merci pour votre réponse jdevbe .Elle m'a résolu le problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  2. Concaténation de deux tableaux
    Par mego dans le forum Langage
    Réponses: 6
    Dernier message: 19/11/2008, 11h52
  3. [Tableaux] Deux tableaux imbriqués
    Par djedje37et28 dans le forum Langage
    Réponses: 4
    Dernier message: 23/03/2007, 19h57
  4. comparer deux tableaux
    Par djibril dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2005, 15h26
  5. Réponses: 4
    Dernier message: 11/10/2005, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo