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

WinDev Discussion :

Besoin d'aide pour fabriquer un JSON [WD24]


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 122
    Points : 136
    Points
    136
    Par défaut Besoin d'aide pour fabriquer un JSON
    Bonjour,

    Je dois fabriquer un JSON reprenant cette structure :

    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
    {
      "Ventes": [
        {
          "NCommande": "12345",
          "Tracking": "AAABBB12345",
          "records": [
            {
              "Article": "BG45789",
              "Qt": "1"
            },
            {
              "Article": "BG78912",
              "Qtcsvlcv": "2"
            }
          ]
        },
        {
          "NCommande": "12346",
          "Tracking": "AAABBB78912",
          "records": [
            {
              "Article": "BG45789",
              "Qt": "3"
            },
            {
              "Article": "BG63478",
              "Qtcsvlcv": "2"
            }
          ]
        }
      ]
    }
    Je ne sais pas qu'elle est la bonne méthode. Je suppose qu'il faudrait définir une structure, mais je ne suis pas très familiarisé avec ce type et je sais encore moins comment la remplir.

    Pourriez-vous m’aider ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu peux utiliser de classes/structure qui reprennent la structure de ton fichier:
    • Une première qui correspond à record, avec article et quantité
    • une seconde Commande, avec une liste de Records
    • Une dernière Vente avec une liste de Commandes

    Une fois tes données renseignées, tu peux utiliser la fonction Sérialise pour en faire un JSON.

    Tatayo.

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    +1 à tatayo.

    Tu es en WD24 : tu peux également utiliser une variable de type JSON pour le manipuler (https://doc.pcsoft.fr/fr-FR/?1000023..._type_variable).

    Tu as un exemple de chaîneVersJSON (https://doc.pcsoft.fr/fr-FR/?1000024531).

    Tu peux également regarder du côté de JSONVersVariant.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 122
    Points : 136
    Points
    136
    Par défaut
    Merci pour vos conseils.

    Pour le moment, j'ai ces structures :

    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
     
    stRecord est une Structure
    	Article est une chaîne
    	Qt      est une chaîne
    FIN
     
    stCommande est une Structure
    	NCommande est une chaîne
    	Tracking est une chaîne
    	Records est un stRecord
    FIN
     
    stVentes est une Structure
    	Commandes est un stCommande
    FIN
     
    stJSON_Ventes est un stVentes
    Mais comment je fais pour ajouter plusieurs lignes (records) à une commande et plusieurs commandes à une vente ?

    Je suppose que je dois passer par un tableau et sérialiser le tableau pour obtenir le JSON. Mais je coince sur la partie remplissage...

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Pour avoir plusieurs Records dans une commande, il faut utiliser un tableau dynamique de Records, tout simplement.
    Idem pour toutes les autres structures, et aussi pour JSON_Ventes.
    Ensuite pour ajouter un Records (par exemple), un simple TableauAjoute fera l'affaire.

    En dernier tu sérialises ton tableau de Ventes, et le tour est joué.

    Tatayo.

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Citation Envoyé par Whaouu Voir le message
    Mais comment je fais pour ajouter plusieurs lignes (records) à une commande et plusieurs commandes à une vente ?
    Il faut que tu modifies tes structures comme ceci
    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
     
    stRecord est une Structure
    	Article est une chaîne
    	Qt      est une chaîne
    FIN
     
    stCommande est une Structure
    	NCommande est une chaîne
    	Tracking est une chaîne
    	Records est un tableau de stRecord
    FIN
     
    stVentes est une Structure
    	Commandes est un tableau de stCommande
    FIN
     
    stJSON_Ventes est un stVentes
    A partir de là tu peux remplir tes données

    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
    POUR nNbCommande = 1 À 2
    	stMaCommande est stCommande
     
    	stMaCommande.NCommande = "12456789"
    	stMaCommande.Tracking = "00000"
     
    	POUR i = 1 À 10
    		stMonRecord est stRecord
    		stMonRecord.Article	= "toto"+i
    		stMonRecord.Qt		= i
    		stMaCommande.Records.Ajoute(stMonRecord)
    	FIN
    	...
    FIN
    ...
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  7. #7
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Il y a pleins de manières de faire perso j'aime bien les variants
    Bien entendu tu remplis avec des boucles...

    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
    33
    34
    35
    sMonJson 	est une chaîne
     
    vJsonVentes	est un Variant
    vVentes	 	est un Variant
    vRecords 	est un Variant
     
    vVentes[1].NCommande	= "12345"
    vVentes[1].Tracking	= "AAABBB12345"
     
    vRecords[1].Article	= "BG45789"
    vRecords[1].Qt		= "1"
    vRecords[2].Article	= "BG78912"
    vRecords[2].Qt		= "2"
     
    vVentes[1].Records	= vRecords
    vRecords		= Null
     
    //------------------------------
     
    vVentes[2].NCommande	= "12346"
    vVentes[2].Tracking	= "AAABBB78912"
     
    vRecords[1].Article	= "BG45789"
    vRecords[1].Qt		= "3"
    vRecords[2].Article	= "BG63478"
    vRecords[2].Qt		= "2"
     
    vVentes[2].Records	= vRecords
    vRecords		= Null
     
    //------------------------------
     
    vJsonVentes.Ventes = vVentes
     
    sMonJson = VariantVersJSON(vJsonVentes,psdMiseEnForme)
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 122
    Points : 136
    Points
    136
    Par défaut
    Bonjour,

    Désolé pour cette réponse tardive. J'ai utilisé les structures et le code préconisé par PhilouZ.

    Cela fonctionne parfaitement.

    Encore merci pour vos précieux conseils !

  9. #9
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Une solution qui pourrait être intéressante si tes données sont issues d'une requête est HExporteJSON
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

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

Discussions similaires

  1. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38
  2. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  3. [Kylix] besoin d'aide pour installer kylix3
    Par Sph@x dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2004, 13h53
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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