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

Python Discussion :

Format fichier JSON hiérarchisé et accès R/W depuis Python3 [Python 3.X]


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Retraité de l'Informatique
    Inscrit en
    Août 2019
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité de l'Informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2019
    Messages : 36
    Points : 35
    Points
    35
    Par défaut Format fichier JSON hiérarchisé et accès R/W depuis Python3
    Bonjour,

    J'utilise un fichier JSON dans sa plus simple expression - 1 niveau avec des clés, pas de soucis.

    Sur un autre projet je veux créer une base JSON à deux niveaux de hiérarchie, un peu comme un répertoires de contacts, que j'accéderais par chargement d'un objet dictionnaire, un peu comme ceci:
    - des groupes (nom, localisation, description)
    - dans chaque groupe des membres (nom, n° téléphone, mail...)

    Déjà à la main je n'arrive pas à structurer mon fichier JSON de base pour accéder à mes informations de manière hiérarchique (choisir groupe, puis choisir membres).
    Ensuite je me pose la question sur la méthode pour accéder à un membre d'un groupe, le modifier, en ajouter...

    Plus qu'une réponse sur cet exemple, des liens vers des tutoriels ou des exemples similaires m'iraient bien. J'ai sûrement mal cherché mais pour l'instant je n'ai rien trouvé.
    Cet exercice est pour moi une méthode pour traiter le sujet, je l'appliquerai ensuite à mon vrai projet.

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Vous avez 2 sujets: comment organiser vos données (et pourquoi choisir une structure hiérarchique et pourquoi JSON?)... Ce choix étant fait (et il est à faire...), comment l'utiliser depuis un programme (éventuellement écrit avec Python).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Bonjour,

    Le JSON pourrait ressembler à

    Code JSON : 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
     
    {
        "groupe": [{
                "name": "groupe 1",
                "contacts": [{
                        "name": "kmkm",
                        "birthday": "24/12/2021"
                    },
                    {
                        "name": "tartanpion",
                        "birthday": "23/12/2021"
                    }
                ]
            },
            {
                "name": "groupe 2",
                "contacts": [{
                        "name": "klkjlm",
                        "birthday": "24/12/2021"
                    },
                    {
                        "name": "tartanpion",
                        "birthday": "23/12/2021"
                    }
                ]
            }
        ]
    }
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Retraité de l'Informatique
    Inscrit en
    Août 2019
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité de l'Informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2019
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Bonjour,

    Le JSON pourrait ressembler à
    Déjà merci pour cette réponse. Dans mes [multiples] tests j'étais en effet arrivé à ce genre de dictionnaire sans savoir vraiment m'en servir.
    Et donc, ma question subsidiaire c'est, une fois le json charger en dictionnaire dans le programme, comment accéder à la liste des 'contacts' du groupe nommé 'groupe 2', et éventuellement en connaitre les caractéristiques un à un ?
    En deux mots je voudrais pouvoir lister les groupes par leur nom et quand je choisis un groupe, en lister les contacts.

    Voilà. Merci

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Vangeles Voir le message
    Et donc, ma question subsidiaire c'est, une fois le json charger en dictionnaire dans le programme, comment accéder à la liste des 'contacts' du groupe nommé 'groupe 2', et éventuellement en connaitre les caractéristiques un à un ?
    Le chemin pour accéder aux contacts est (par exemple) ['groupe'][0]['contacts'] qui reflète:
    • la clef 'groupe' du premier dictionnaire,
    • l'indice du premier item de la liste des dictionnaires associées
    • la clef contacts du premier dictionnaire de cette liste.


    Après pour coder çà, c'est une histoire de boucles/tests/conditions avec des listes et des dictionnaires... tout ce qu'on apprend dans les tutos.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Retraité de l'Informatique
    Inscrit en
    Août 2019
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité de l'Informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2019
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Le chemin pour accéder aux contacts est (par exemple) ['groupe'][0]['contacts'] qui reflète:
    ....- W
    Merci.

    En fait, entre Fred1599 et toi wiztricks vous avez répondu aux deux sujets de ma question, un pour la structure du Json, l'autre pour l'accès.

    Soit la clé primaire 'groupe' et la clé secondaire 'contacts', en leur associant l'indice de rang on accède à l'ensemble ou au détail des données.

    Pour les boucles je devrais pouvoir m'en sortir.
    Je vais déjà écrire un petit programme simple de gestion de contacts (création/modification/suppression 'groupe' et pareil pour les 'contacts' dans chaque groupe), et après je l'appliquerai à mon projet final.

    Pour un exemple, soit DATA mon dictionnaire chargé, on peut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >>> print("Groupe: ",DATA['groupe'][1]['name'], "\nContact: ", DATA['groupe'][1]['contacts'][0]['name'], "\nAnniversaire: ", DATA['groupe'][1]['contacts'][0]['birthday'])
    Groupe:  groupe 2 
    Contact:  klkjlm 
    Anniversaire:  24/12/2021
    >>>
    Merci encore, je mets à RÉSOLU.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Peut-être que cette discussion récente pourra vous aider à un moment donné :
    https://www.developpez.net/forums/d2...-dictionnaire/

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Vangeles Voir le message
    Je vais déjà écrire un petit programme simple de gestion de contacts (création/modification/suppression 'groupe' et pareil pour les 'contacts' dans chaque groupe), et après je l'appliquerai à mon projet final.
    Peut être qu'il serait judicieux de faire la base de données avec SQLITE et garder le format JSON pour extraire/charger des données externes.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 105
    Points : 4 455
    Points
    4 455
    Par défaut
    bonjour

    le problème avec json c'est que l'on se retrouve après chargement avec un dictionnaire complexe et donc pas du tout pratique à exploiter dans une application.
    Mais, si json est obligatoire..., il est possible de convertir le json en objets et donc d'avoir un code python plus adapté à la manipulation de nos données
    exemple (en anglais désolé)

    ps: même problème avec YAML
    $moi= ( !== ) ? : ;

  10. #10
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    le problème avec json c'est que l'on se retrouve après chargement avec un dictionnaire complexe et donc pas du tout pratique à exploiter dans une application.
    Tu as mieux que JSON pour un WS ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

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

Discussions similaires

  1. Charger, formater un fichier JSON et l'exporter en TXT
    Par Macmachi dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 23/11/2016, 16h44
  2. Réponses: 6
    Dernier message: 17/09/2015, 00h35
  3. Convertir un fichier JSON dans un format XML en PHP
    Par imen.m dans le forum Langage
    Réponses: 6
    Dernier message: 11/09/2015, 16h46
  4. formats fichiers (ms3d,bsp,md2,3ds,x)
    Par Husqvarna dans le forum Moteurs 3D
    Réponses: 5
    Dernier message: 22/05/2006, 04h50
  5. Appeler un fichier executable directement en accès http ?
    Par manu49 dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 14/03/2006, 18h33

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