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
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)
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
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
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.