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

JavaScript Discussion :

Parcourir résultat json


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 207
    Points : 94
    Points
    94
    Par défaut Parcourir résultat json
    Je possède ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"status":"ok","count":10,"count_total":"28","pages":3,"posts":[{"id":204,"slug":"1er-titre" .... [{"id":104,"slug":"2-titre"
    Si je fais cela par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.debug(data.posts[0].slug);
    je récup le premier slug.

    Est il possible de récupérer un slug par id.
    J'aimerais récupérer par exemple le slug de la news qui a un id valant 104 par exemple.

    J'ai rien réussi à trouver pour cela.

    Merci

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Je ne vois pas trop le souci: pourquoi n'écris tu pas un petit bout de code qui fait ce travail de recherche ?

    Sinon sache qu'il existe aussi JSON PAth qui est à JSON ce que XPath est au XML, mais c'est un peu violent pour faire uniquement ce que tu souhaites.

    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Points : 209
    Points
    209
    Par défaut
    Salut,

    Il y a la solution d'itérer sur ton objet json pour trouver l'élément désiré...

    Sinon, j'ai trouvé ça sur le net : http://goessner.net/articles/JsonPath/

    qui pourrait répondre à ton besoin, par contre, je ne l'ai pas essayé ni testé...

    Si tu connais xpath pour xml, ça devrait t'aider.

    A+

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 207
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Salut,

    Je ne vois pas trop le souci: pourquoi n'écris tu pas un petit bout de code qui fait ce travail de recherche ?

    Sinon sache qu'il existe aussi JSON PAth qui est à JSON ce que XPath est au XML, mais c'est un peu violent pour faire uniquement ce que tu souhaites.

    ERE
    Merci à vous deux.

    En fait je découvre json.
    Donc je pensait qu'il existait une méthode ou librairie toute simple permettant de le faire.

    Je vais regarder le lien.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par jeronimo83 Voir le message
    Donc je pensait qu'il existait une méthode ou librairie toute simple permettant de le faire.
    ben dans la mesure où tu récupère un array(), il n'est pas trop compliqué de le parcourir et d'ajouter un test d'égalité dans la boucle, si ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 207
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Bonjour,ben dans la mesure où tu récupère un array(), il n'est pas trop compliqué de le parcourir et d'ajouter un test d'égalité dans la boucle, si ?

    A+
    Pour la récupération unique d'une news avec un id précis non, mais on peux imaginer récupérer les news postés par un auteur bien précis etc ...

    Enfin le JSONPatch a l'air de bien correspondre à cela.

  7. #7
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par jeronimo83 Voir le message
    Pour la récupération unique d'une news avec un id précis non, mais on peux imaginer récupérer les news postés par un auteur bien précis etc ...

    Enfin le JSONPatch a l'air de bien correspondre à cela.
    Quand je récupère des flux d'un serveur (flux JSON Et XML en particulier), je passe par un adapter qui va me transformer le flux, pour qu'il réponde aux besoin de mon application, comme ça demain si le flux change, je n'ai juste qu'à changer mon adapter et pas besoin de changer le reste de mon appli.

    Dans ton cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var slugs={};
     
    for (var i=0; i<data.posts.length; i++) {
    	var sl = data.posts[i];
    	slugs[sl.id] = sl;
    };
    slugs est maintenant une hashmap sur laquelle tu pourras directement accéder à tes slugs par leur ID

    slugs[214] <-- recupère le slug avec l'id 214

    Après cette hashmap "slugs", si tu en as besoin tout le temps tu la mets dans un objet global (une sorte de 'model' qui contient les données de l'appli)

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par jeronimo83 Voir le message
    Enfin le JSONPatch a l'air de bien correspondre à cela.
    Pas mal

    Je ne connaissais pas non plus JSONPath, mais effectivement, ça a l'air pas mal ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  9. #9
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par BaBeuH Voir le message
    Salut,

    Il y a la solution d'itérer sur ton objet json pour trouver l'élément désiré...

    Sinon, j'ai trouvé ça sur le net : http://goessner.net/articles/JsonPath/

    qui pourrait répondre à ton besoin, par contre, je ne l'ai pas essayé ni testé...

    Si tu connais xpath pour xml, ça devrait t'aider.

    A+
    Etant donné qu'on a un objet JS, et qu'on peut y accéder en faisant :
    json.tree1.tree2.array1[2].obj.value

    je vois pas trop l'intérêt d'aller attaquer un objet JS (un JSon evalué étant un objet JS) avec du Xpath o_O

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Points : 209
    Points
    209
    Par défaut
    Je ne vois pas comment tu peux "sélectionner" tes éléments via la notation litérale de js ?

    json.tree1.tree2.array1[2].obj.value

    fonctionne lorsque tu connais l'index de ton array1, mais ce n'est apparemment pas le cas, la recherche se fait sur un attribut/propriété d'un des objets... d'où l'intérêt du JSONPath (du moins s'il possède les même axes de recherche que XPath... je n'ai pas regardé en détail).

    A+

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par BaBeuH Voir le message
    fonctionne lorsque tu connais l'index de ton array1, mais ce n'est apparemment pas le cas, la recherche se fait sur un attribut/propriété d'un des objets... d'où l'intérêt du JSONPath
    +1

    Notamment les caractères génériques
    Citation Envoyé par JSONPath
    * : wildcard. All objects/elements regardless their names.
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Points : 330
    Points
    330
    Par défaut
    Citation Envoyé par Gatsu35 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var slugs={};
     
    for (var i=0; i<data.posts.length; i++) {
    	var sl = data.posts[i];
    	slugs[sl.id] = sl;
    };

    La structure est connu, c'est ce qu'il y a de plus rapide. On peut même utiliser un Array pour avoir une table à accès direct qu'on peut trier.

    JSONPath est sacrément lourd pour la petite complexité de l'analyse. De plus, il parcourt l'arborescence à chaque requête.

  13. #13
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par kernelfailure Voir le message

    La structure est connu, c'est ce qu'il y a de plus rapide. On peut même utiliser un Array pour avoir une table à accès direct qu'on peut trier.

    JSONPath est sacrément lourd pour la petite complexité de l'analyse. De plus, il parcourt l'arborescence à chaque requête.
    Dans ton cas où les ids de tes éléments sont des numeros, je dirait oui et non
    un array n'est pas une hashmap, il vaut mieux avoir les 2, une map et un array

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 207
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par kernelfailure Voir le message

    La structure est connu, c'est ce qu'il y a de plus rapide. On peut même utiliser un Array pour avoir une table à accès direct qu'on peut trier.

    JSONPath est sacrément lourd pour la petite complexité de l'analyse. De plus, il parcourt l'arborescence à chaque requête.
    Je vais faire un truc dans le genre en effet, ca semble plus pratique et moins lourd à mettre en place.

Discussions similaires

  1. Récupérer résultat JSON sans stdClass ?
    Par a028762 dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2013, 18h09
  2. [MySQL] parcourir résultats d'une requête
    Par omar344 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/12/2012, 00h47
  3. Impossibilté de parcourir du JSON
    Par graham dans le forum Langage
    Réponses: 0
    Dernier message: 01/04/2012, 13h02
  4. [OCI] select parcourir résultat
    Par michel.di dans le forum Interfaces de programmation
    Réponses: 10
    Dernier message: 26/10/2009, 10h10
  5. [AJAX] parcourir un JSON
    Par DeeVoiD dans le forum AJAX
    Réponses: 8
    Dernier message: 09/04/2009, 11h11

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