|
| Structure , variant et JSON |
| Débuté par Michel GARCIA, 18 déc. 2019 12:19 - 6 réponses |
| |
| | | |
|
| |
Membre enregistré 409 messages |
|
| Posté le 18 décembre 2019 - 12:19 |
Bonjour à tous,
Je sèche sur un point en relation avec des structures, variants et JSON. Il s'agit de pouvoir déterminer plusieurs lieux, avec latitude, longitude, en utilisant une structure pour créer un tableau des divers lieux
Typiquement le fichier à traiter en JSON doit être ainsi :
"locations":[ { "name":"Montanejos", "lat":40.064012, "lon":-0.523261} ]
Mon code est :
gLOCATION est un JSON gLOCATION.locations[1].name = "Montanejos" gLOCATION.locations[1].lat = 40.064012 gLOCATION.locations[1].lon = -0.523261
STLocation est une structure name est une chaîne lat est un entier lon est un entier FIN gtabLocations est un tableau de STLocation gstSingleLocation est un STLocation POUR i=1 À 3 gstSingleLocation.name = "Test " + i gstSingleLocation.lat = 40.064012 + i gstSingleLocation.lon = -0.523261 +i TableauAjoute(gtabLocations,gstSingleLocation) FIN
Info("JSON = ", gLOCATION) gLocationData est un JSON = gtabLocations Info("Tableau de STructure à JSON =",gLocationData)
Les données sont bien passées pour le format JSON lorsque la variable est définie de type JSON, mais lors du passage de la tableau de structure à JSON, le terme "locations" n'apparaît pas.
JUSTE:

FAUX:

J'ai essayé de créer un tableau de type "locations.nom", "locations.lat", "locations.lon" mais WD n'autorise pas cela, et je n'ai plus d'idées par où chercher... J'ai testé avec les variants, même problème.
Si vous avez une idée ou solution, elle sera la bienvenue. Merci, Michel
-- If it works, don't touch it, don't look at it, AND don't fix it ! No patches, no SP ! JUST DONT FIX IT. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 640 messages |
|
| Posté le 18 décembre 2019 - 12:45 |
Hello, ca devrait marcher :
gLOCATION est un JSON gLOCATION.locations[1].name = "Montanejos" gLOCATION.locations[1].lat = 40.064012 gLOCATION.locations[1].lon = -0.523261
STLocation est une structure, Sérialise = "Locations" name est une chaîne lat est un entier lon est un entier FIN STLoc est une structure locations est un tableau de STLocation FIN gtabLocations est un STLoc gstSingleLocation est un STLocation, Sérialise = "location"
POUR i=1 À 3 gstSingleLocation.name = "Test " + i gstSingleLocation.lat = 40.064012 + i gstSingleLocation.lon = -0.523261 +i TableauAjoute(gtabLocations.locations,gstSingleLocation) FIN
Info("JSON = ", gLOCATION)
gLocationData est un JSON = gtabLocations Info("Tableau de STructure à JSON =",gLocationData)
Il d'abord creer une structure maitresse STloc qui va contenir le tableau de structure pour obtenir ce que tu veux. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 640 messages |
|
| Posté le 18 décembre 2019 - 12:49 |
Edit :
STLocation est une structure, Sérialise = "Locations" name est une chaîne lat est un réel lon est un réel FIN
Réel a la place d'entiers pour les lng et lat |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 409 messages |
|
| Posté le 18 décembre 2019 - 13:50 |
Bonjour François C. ! Merci beaucoup, ça marche d'enfer !
Juste pour les réels en lieu et place des entiers, j'avais corrigé dans le code, mais pas sur le forum.
Que tu sois béni jusqu'à la 17ème génération, au moins !  Michel
-- If it works, don't touch it, don't look at it, AND don't fix it ! No patches, no SP ! JUST DONT FIX IT. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 512 messages |
|
| Posté le 18 décembre 2019 - 15:44 |
Bonjour,
J'arrive un peu tard pour proposer une solution basée sur le type variant avec sous-éléments nommés et indicés imbriqués.
vLocations est un Variant
POUR i = 1 A 3 vLocations.locations[i].name = "Test " + i vLocations.locations[i].lat = 0n40.064012 + i vLocations.locations[i].lon = -0n0.523261 + i FIN
Info("JSON = " + VariantVersJSON(vLocations))
Le type variant du WLangage est flexible. En partant d'une variable de type variant non-initialisée, il est possible de construire dynamiquement une structure de données complexe qui peut ensuite être simplement "convertie" au format textuel JSON. https://doc.pcsoft.fr/fr-FR/?1514019&name=Type_Variant

P.S. la valeur numérique des membres .lat et .lon est en notation numérique (préfixe 0n) et force un type numérique.Message modifié, 18 décembre 2019 - 15:47 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 640 messages |
|
| Posté le 18 décembre 2019 - 15:50 |
Oui mais bon visiblement il voulait utiliser le type JSON  |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 409 messages |
|
| Posté le 18 décembre 2019 - 16:12 |
Merci à tous les deux... C'est surtout que je dois récupérer un nombre inconnu de paramètres (lieu, lat, lon) pour pouvoir faire un jeu de piste / chasse au trésor sur le Droid... (en lien avec Gogole Maps)...
Donc, pour l'instant je teste avec les Structures, je regarde après avec les variants... Apprendre un jour, apprendre toujours... Merci Aspro (avec ou sans Vitamine C)! 
-- If it works, don't touch it, don't look at it, AND don't fix it ! No patches, no SP ! JUST DONT FIX IT.Message modifié, 18 décembre 2019 - 16:14 |
| |
| |
| | | |
|
| | | | |
| | |
|