|
Comment connaitre la structure d'un enregistrement JSON? |
Débuté par Jose Dubois, 23 fév. 2021 17:21 - 6 réponses |
| |
| | | |
|
| |
Posté le 23 février 2021 - 17:21 |
Bonjour,
Je peux parcourir les données de l'enregistrement avec .Membre mais je n'ai pas trouvé comment parcourir la structure, par exemple, j'obtiens facilement la valeur 2 si je connais le membre cdrvoicemail dans l'enregistrement partiel suivant mais comment connaître l'élément "cdrvoicemail" si j'ignore la structure?
{"server_name":"RNT Inc","tenantcode":"999","package_id":"5","glocomproxy":null,"absolutetimeout":"14400","cdrvoicemail":"2","faxformat":"letter","faxfiletype":"1"
Merci d'avance!
JD |
| |
| |
| | | |
|
| | |
| |
Posté le 23 février 2021 - 18:13 |
je ne sais pas s'il y a une fonction json spécifique pour ca, mais en tous les cas, un json est juste un foichier de chaines, et donc extratichaine peut extraire tous les éléments |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 473 messages Popularité : +20 (20 votes) |
|
Posté le 23 février 2021 - 20:05 |
| |
| |
| | | |
|
| | |
| |
Posté le 23 février 2021 - 22:30 |
| |
| |
| | | |
|
| | |
| |
Posté le 24 février 2021 - 12:04 |
Et donc encore une fois un exemple qui montre ce qu'il ne faut surtout PAS faire dans la vrai vie...
La récursivité est officiellement NON supportée en wlanguage.
Ca fonctionne, oui, mais le nombre de 'tours' que tu peux effectuer avant que ton programme explose est : - Faible - TRES différent selon les versions (le maximum que j'ai trouvé quand je faisais des tests était 600 niveaux, et c'est descendu à 128 la version d'après)
Fais une simple boucle récursive qui compte et fait un trace de la valeur et tu verras par toi même le crash spectaculaire...
Donc cet exemple va fonctionner tant que la structure du json est simple ET tu ne l'appelles pas depuis quelque part qui est déjà très profond dans la pile des appels...
Donc, fais de la récursivité si tu veux ne jemais savoir si ton programme va planter ou pas quand tu passes à la nouvelle version, ou quand tu appelle ton code depuis quelque part ailleurs. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 945 messages Popularité : +53 (63 votes) |
|
Posté le 26 février 2021 - 16:30 |
Bonjour,
sJSon est une chaîne ANSI = [ { "Membre1": "Valeur Membre 1", "Membre2": "Valeur Membre 2", "Membre3": "Valeur Membre 3", "Membre 4": { "Membre 5": { "Membre 6": 6, "Membre 7": "Valeur Membre 7" }, "Membre 8": { "Membre 9": 9, "Membre 10": "Valeur Membre 10" } } } ]
soit vjs = JSONVersVariant(sJSon)
POUR TOUT _Membre de vjs..Membre
SI _Membre..Membre..Occurrence = 0 ALORS Trace("Le membre " + _Membre..Nom + " a la valeur " + _Membre..Valeur) SINON Trace("Le membre " + _Membre..Nom + " a " + _Membre..Membre..Occurrence + ... " autres membres") ParcoursMembresVariant(_Membre) FIN FIN
PROCEDURE INTERNE ParcoursMembresVariant(x)
POUR TOUT _Membre de x..Membre SI _Membre..Membre..Occurrence = 0 ALORS Trace(Répète("--", ChaîneOccurrence(dbgInfo(dbgPile), RC)) + ... "Le membre " + _Membre..Nom + " a la valeur " + _Membre..Valeur) SINON Trace(Répète("--", ChaîneOccurrence(dbgInfo(dbgPile), RC)) + ... "Le membre " + _Membre..Nom + " a " + _Membre..Membre..Occurrence + ... " autres membres...") ParcoursMembresVariant(_Membre) FIN FIN FIN
Vu ici : https://doc.pcsoft.fr/fr-fr/?1000021296&name=jsonversvariant_fonction
jordan |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 286 messages Popularité : +24 (28 votes) |
|
Posté le 27 février 2021 - 14:33 |
Bonjour
Je me suis permis d'ajouter la notion de "tableau"
PROCÉDURE INTERNE ParcoursMembresVariant(x) sListeValeurs est une chaîne POUR TOUT _Membre DE x..Membre SI _Membre..Membre..Occurrence = 0 ALORS SI (_Membre..Type <> wlVariantTableau ) ALORS Trace(Répète("--", ChaîneOccurrence(dbgInfo(dbgPile), RC)) + "Le membre " + _Membre..Nom + " a la valeur " + _Membre..Valeur) SINON sListeValeurs = "" POUR TOUT cellule DE _Membre sListeValeurs += cellule + "," FIN Trace(Répète("--", ChaîneOccurrence(dbgInfo(dbgPile), RC)) + "Le membre " + _Membre..Nom + " a pour valeur " + sListeValeurs) FIN SINON Trace(Répète("--", ChaîneOccurrence(dbgInfo(dbgPile), RC)) + ... "Le membre " + _Membre..Nom + " a " + _Membre..Membre..Occurrence + " autres membres...") ParcoursMembresVariant(_Membre) FIN FIN FIN |
| |
| |
| | | |
|
| | | | |
| | |
|