1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

DEMANDE REPERER VALEUR JSON

Discussion dans 'Windev' créé par FLAV2020, Fev 6, 2023.

  1. FLAV2020

    FLAV2020 New Member

    Inscrit:
    Jan 29, 2019
    Messages:
    23
    J'aime reçus:
    0
    Bonjour,

    Après plusieurs essais avec les fonction VariantVersJson, Deserialisation, etc , je butte sur comment récupérer les valeurrs du json ci-dessous dans ma table TINFOPAYS dont les colonnes sont (tname,tstate,tcountry,tpopulation,id)

    {
    "results": [
    {
    "name": "San Francisco",
    "state": "CA",
    "country": "USA",
    "population": "3314000",
    "rowIndex": 2
    },
    {
    "name": "Los Angeles",
    "state": "CA",
    "country": "USA",
    "population": "12458000",
    "rowIndex": 3
    },
    {
    "name": "Washington, D.C.",
    "state": "null",
    "country": "USA",
    "population": "5207000",
    "rowIndex": 4
    },
    {
    "name": "Tokyo",
    "state": "null",
    "country": "Japan",
    "population": "37400068",
    "rowIndex": 5
    },
    {
    "name": "Shanghai",
    "state": "null",
    "country": "China",
    "population": "25582000",
    "rowIndex": 6
    },
    {
    "name": "Paris",
    "state": "null",
    "country": "France",
    "population": "10901000",
    "rowIndex": 7
    },
    {
    "name": "São Paulo",
    "state": "null",
    "country": "Brazil",
    "population": "21650000",
    "rowIndex": 8
    },
    {
    "name": "Madrid",
    "state": "null",
    "country": "Spain",
    "population": "6497000",
    "rowIndex": 9
    },
    {
    "name": "Toronto",
    "state": "null",
    "country": "Canada",
    "population": "6082000",
    "rowIndex": 10
    },
    {
    "name": "Chicago",
    "state": "IL",
    "country": "USA",
    "population": "8864000",
    "rowIndex": 11
    },
    {
    "name": "San Francisco",
    "state": "CA",
    "country": "USA",
    "population": "860000",
    "rowIndex": 12
    },
    {
    "name": "New Jersey",
    "state": "NJ",
    "country": "USA",
    "population": "1244000",
    "rowIndex": 13
    }
    ],
    "hasNextPage": false
    }

    Ci-dessosus mon code :

    [windev]sResVariant est une chaîne
    sResApi est une chaîne
    //sToken est chaîne =
    ApiKey est une chaîne =""
    sSpreadsheetId est une chaîne =""
    cMyRequest is restRequest
    vMonVariant est Variant
    stMaListe est un LData

    //vResVariant est un variant
    cMyRequest..URL = "

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    "
    cMyRequest..Méthode = httpGet
    cMyRequest..ContentType = "application/json"
    //cMyRequest..Contenu = VariantVersJSON(paramvariable))//sParametres)
    cMyResponse is restResponse = RESTEnvoie(cMyRequest)

    SI (cMyResponse..StatusCode) = 200 ALORS



    sResApi = HTTPDonneRésultat(httpRésultat)
    sResVariant = (cMyResponse..Contenu)
    vMonVariant = JSONVersVariant(cMyResponse..Contenu)

    sSource est une chaîne ANSI = [
    {
    "results": [
    {
    "name": "San Francisco",
    "state": "CA",
    "country": "USA",
    "population": "3314000",
    "rowIndex": 2
    },
    {
    "name": "Los Angeles",
    "state": "CA",
    "country": "USA",
    "population": "12458000",
    "rowIndex": 3
    },
    {
    "name": "Washington, D.C.",
    "state": "null",
    "country": "USA",
    "population": "5207000",
    "rowIndex": 4
    },
    {
    "name": "Tokyo",
    "state": "null",
    "country": "Japan",
    "population": "37400068",
    "rowIndex": 5
    },
    {
    "name": "Shanghai",
    "state": "null",
    "country": "China",
    "population": "25582000",
    "rowIndex": 6
    },
    {
    "name": "Paris",
    "state": "null",
    "country": "France",
    "population": "10901000",
    "rowIndex": 7
    },
    {
    "name": "São Paulo",
    "state": "null",
    "country": "Brazil",
    "population": "21650000",
    "rowIndex": 8
    },
    {
    "name": "Madrid",
    "state": "null",
    "country": "Spain",
    "population": "6497000",
    "rowIndex": 9
    },
    {
    "name": "Toronto",
    "state": "null",
    "country": "Canada",
    "population": "6082000",
    "rowIndex": 10
    },
    {
    "name": "Chicago",
    "state": "IL",
    "country": "USA",
    "population": "8864000",
    "rowIndex": 11
    },
    {
    "name": "San Francisco",
    "state": "CA",
    "country": "USA",
    "population": "860000",
    "rowIndex": 12
    },
    {
    "name": "New Jersey",
    "state": "NJ",
    "country": "USA",
    "population": "1244000",
    "rowIndex": 13
    }
    },
    "hasNextPage": false
    }
    ]


    Désérialise(stMaListe, sSource, psdJSON)


    // --- SUPPRESSION DES DONNEES DE LA TABLE & MAJ ---- //
    HLitPremier(TVILLE,IDTVILLE)
    TANTQUE PAS HEnDehors(TVILLE)
    HSupprime(TVILLE)
    HLitSuivant(TVILLE)
    FIN

    // --- PARCOURS DU RESULTAT JSON POUR REMPLIR MA TABLE ---- //
    POUR TOUT monElement DE vMonVariant
    //
    stMaListe.LName = monElement.results.name
    stMaListe.LState = monElement.results.state
    stMaListe.LCountry = monElement.results.country
    stMaListe.LPopulation = monElement.results.population
    FIN


    SINON

    // Erreur(cMyResponse..StatusCode)

    FIN[/windev]

    Si vous pouvez m'aider ou corriger mon intention..lol

    Merci
     
  2. Dandypunk

    Dandypunk Well-Known Member

    Inscrit:
    Nov 28, 2019
    Messages:
    610
    J'aime reçus:
    333
    Bonjour,
    Dans un premier temps, c'est soit l'utilisation des variants, soit la désérialisation.
    Je préfère la 2° méthode pour 2 raisons :
    -Elle fonctionne quel que soit le type renvoyé (JSON, XML, Binaire)
    -En utilisant bien <Mapping> et <Serialise> on a accès directement aux tables concernées via MémoireVersFichier et consort.

    Dans un deuxième temps, je ne vois pas la déclaration de ta structure.

    Enfin ton code :
    Code (Windev):
    // --- SUPPRESSION DES DONNEES DE LA TABLE & MAJ ---- //

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TVILLE,IDTVILLE)
    TANTQUE PAS

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TVILLE)
         

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TVILLE)
         

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TVILLE)
    FIN
    Peut facilement être remplacé par :
    Code (Windev):

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TVille)
     
     
  3. FLAV2020

    FLAV2020 New Member

    Inscrit:
    Jan 29, 2019
    Messages:
    23
    J'aime reçus:
    0
    Hello

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    merci de ton aide.
    Quand tu vois mon code j'ai bien utilisé la solution 2 comme tu l'as signifié mais j'obtiens rien (j'ai un message du genre la variant n'est pas un objet valide...) Si tu veux bien m'aider avec un bout de code jes suis preneur. Ci(dessous la déclaration de ma structure :


    LData est une Structure

    LName est une chaîne
    LState est une chaîne
    LCountry est une chaîne
    LPopulation est un entier

    FIN

    Avec :

    stMaListe est un LData
     
  4. Dandypunk

    Dandypunk Well-Known Member

    Inscrit:
    Nov 28, 2019
    Messages:
    610
    J'aime reçus:
    333
    1-Sans l'utilisation de l'attribut <Serialise>, le nom des membres de la structure doit correspondre au nom des membres du JSON et les types doivent correspondre au type du JSON (Population est une chaîne (encadrée par ""))
    2-Ton JSON est une structure qui ne correspond pas à la structure que tu passes en paramètre.

    Code (Windev):
    CData est une Classe <MAPPING="TVille">
        <MAPPING>
            m_saName est chaîne <

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ="name",mapping="LName">
            m_saState est chaîne<

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ="state",mapping="LState">
            m_saCountry est chaîne <

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ="country",mapping="LCountry">
            m_saPopulation est chaîne <

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ="population",mapping="LPopulation">
        <FIN>
        m_nRowID est entier <

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ="rowIndex">
    FIN
    Récupération des données (afin d'alléger le code j'ai copié le JSON dans un fichier)
    Code (Windev):
    STRESULT est une Structure
        results        est un tableau de CData
        hasNextPage    est un booléen
    FIN

    bufMonJson est une Buffer
    clVille est CData
    stRésultat est STRESULT

    bufMonJson=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("Resultat.JSON")    //Simule la récupération du JSON via l'API.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (stRésultat,bufMonJson,psdJSON)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TVille)
    POUR TOUT clVille DE stRésultat.results
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (clVille,TVille)
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TVille)
    FIN
     
    suenodesign apprécie ceci.
  5. FLAV2020

    FLAV2020 New Member

    Inscrit:
    Jan 29, 2019
    Messages:
    23
    J'aime reçus:
    0
    Super merci @

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    . Effectivement tu as parfaitement raison! lol...
    J'ai utilisé une structure à la la place de la classe toujours avec ta méthode. Je mettrai le code que j'ai adopté. ça peut toujours aider...lol. Grand merci à toi pour ton temps et ton aide.
     
  6. MobileWX2020

    MobileWX2020 New Member

    Inscrit:
    Juin 18, 2020
    Messages:
    12
    J'aime reçus:
    19

Partager cette page

Chargement...