|
[WD25] Problème avec nom de rubrique json |
Débuté par Benoit MALHERBE, 30 oct. 2023 11:52 - 5 réponses |
| |
| | | |
|
| |
Membre enregistré 7 messages |
|
Posté le 30 octobre 2023 - 11:52 |
Bonjour, j'interroge une api qui me renvoie un json
{ "siren": 830592028, "control_list": "gel,ppe", "beneficial-owners": [ { "name": "John Doe", "birth_date": "10/1990", "participation": 50, "results": [ { "id": "24032025_PPEIN_6502_98", "control_list": "gel", "name": "John Doe", "birth_date": "1977-12-21", "source": "Sanctions of OFAC", "accuracy": 98, "informations": "Identite : Important Person" }, { "id": "24032025_PPEIN_6502_100", "control_list": "ppe", "name": "John Doe", "birth_date": "1977-12-21", "source": "PPE France", "accuracy": 100, "informations": "Identite : Président république..." } ] } ] } Le problème se pose au niveau de la "clé" beneficial-owners à cause du "-" dans le nom. Je n'arrive pas à en récupérer les valeurs car il y a un problème de compil. Mon code :
Trace (Interro.Contenu) Resultat = HTTPEnvoie(Interro) jResultat = Resultat..Contenu Trace (Resultat.CodeEtat) Trace (jResultat) Test est un Variant = JSONVersVariant(jResultat) Trace(jResultat.siren) Trace(jResultat.beneficial-owners)
Par avance merci de votre aide. Bien cordialement. Benoît |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 5 messages |
|
Posté le 30 octobre 2023 - 12:48 |
Bonjour,
Tu peux utiliser les apostrophes ou les indirections :
Trace(jResultat.'beneficial-owners')
Trace({"jResultat.beneficial-owners"}) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 7 messages |
|
Posté le 30 octobre 2023 - 13:06 |
Bonjour Michaël,
merci cela fonctionne.
Petite question subsidiaire comment récupérer un json imbriqué dans un autre (beneficial-owners imbriqué dans mon json réponse ?
Par avance, merci. Benoit |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 5 messages |
|
Posté le 31 octobre 2023 - 09:28 |
Bonjour Benoit,
Simplement comme ceci :
Owners est JSON = jResultat.'beneficial-owners'
Cela te donnera un tableau de 1 JSON vu que dans ton exemple il n' y a qu'une occurence, sinon idem pour les results :
Results est JSON = Owners[1].results
Là tu aura un tableau de 2 json |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 895 messages Popularité : +227 (347 votes) |
|
Posté le 01 novembre 2023 - 09:43 |
Bonjour, Une autre solution qui a l'avantage -d'être universelle (ie de fonctionner en JSON, XML et binaire) -d'être portable vers d'autres langages est la désérialisation. Initialisation
STResultat est une structure siren est un entier control_list est une chaîne 'beneficial-owners' est un tableau de 'STbeneficial-owners' FIN
STresults est une structure id est une chaîne control_list est une chaîne name est une chaîne birth_date est une chaîne 'Source' est une chaîne accuracy est un entier informations est une chaîne FIN
'STbeneficial-owners' est une structure name est une chaîne birth_date est une chaîne participation est un entier results est un tableau de STresults FIN
Récupération des données :
stRes est STResultat bufRéponse est un Buffer
bufRéponse=fChargeBuffer("ResJSON.JSON") Désérialise(stRes,bufRéponse,psdJSON)
Trace(stRes:'beneficial-owners'[1].results[2].Name)
-- Il y a peut être plus simple, mais, ça tourneMessage modifié, 01 novembre 2023 - 09:47 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 7 messages |
|
Posté le 09 novembre 2023 - 15:11 |
Bonjour, merci pour vos réponses (désolé j'étais en vacances).
Bon dév. Benoît |
| |
| |
| | | |
|
| | | | |
| | |
|