PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Créer JSON
Créer JSON
Débuté par Anthony, 01 avr. 2025 22:51 - 7 réponses
Membre enregistré
25 messages
Posté le 01 avril 2025 - 22:51
Bonjour,

je n'ai jamais créé de JSON, je dois créer un fichier de ce format :
{
"DraftName": "Mon brouillon OK",
"SubmittedDraftOfEADESAD": {
"ConsigneeTrader": {
"Traderid": "PT0000XXXXXXX",
"TraderName": "Nom",
"StreetName": "Adresse",
etc...
}
}
}

sachant que Adresse, Nom... seront des variables. Le fichier est assez long, plein de sous rubrique.
J'ai vu qu'on pouvait créer une variable de type JSON mais est-ce qu'il est possible de manipuler directement un JSON en mettant directement des {} et comment affecter les variables (je n'ai pas trouvé d'exemple avec des variables) ou il faut passer obligatoirement par un variant ou une Chaine, quelle est la meilleure solution s'il en existe plusieurs ? (la plus simple à mettre en place selon vous).

Merci
Anthony
Membre enregistré
890 messages
Posté le 02 avril 2025 - 01:17
Bonjour, je pense que ce que vous voulez faire est assez simple. Preuba ce code :

jsDatos is JSON

jsDatos.DraftName = "Mon brouillon OK"
jsDatos.SubmittedDraftOfEADESAD.ConsigneeTrader.Traderid = "PT0000XXXXXXX"
jsDatos.SubmittedDraftOfEADESAD.ConsigneeTrader.TraderName = "Nom"
jsDatos.SubmittedDraftOfEADESAD.ConsigneeTrader.StreetName = "Adresse"

Info(jsDatos.ToString())


Rubén

--
https://depot.pcsoft.fr/search.awp…

https://www.linkedin.com/in/rub%C3%A9n-s%C3%A1nchez-pe%C3%B1a-7a868212/
https://play.google.com/store/apps/details…
Membre enregistré
4 215 messages
Posté le 02 avril 2025 - 07:52
Bonjour,
Une autre solution est de passer par la sérialisation, surtout si le JSON doit être le résultat d'une requête.
STConsigneeTrader est une structure
Traderid est une chaîne
TraderName est une chaîne
StreetName est une chaîne
FIN

STSubmittedDraftOfEADESAD est une structure
ConsigneeTrader est un STConsigneeTrader
FIN

STFournisseur est une structure
DraftName est une chaîne
SubmittedDraftOfEADESAD est un STSubmittedDraftOfEADESAD
FIN


Code avec affectation :
Procedure JSONParVariable(LOCAL saRefFournisseur est chaîne,LOCAL saNomFournisseur est chaîne,LOCAL saAdresseFournisseur est chaîne) :Buffer
bufJSON est un Buffer
stFournisseur est STFournisseur

stFournisseur:SubmittedDraftOfEADESAD:ConsigneeTrader:Traderid=saRefFournisseur
stFournisseur:SubmittedDraftOfEADESAD:ConsigneeTrader:TraderName=saNomFournisseur
stFournisseur:SubmittedDraftOfEADESAD:ConsigneeTrader:StreetName=saAdresseFournisseur

Sérialise(stFournisseur,bufJSON,psdJSON)

RENVOYER bufJSON


Code à partir du résultat d'une requête
Procedure JSON_REQ() : Buffer
stFournisseur est STFournisseur
bufJSON est un Buffer

FichierVersMémoire(stFournisseur,REQ_Fournisseur)
Sérialise(stFournisseur,bufJSON,psdJSON)

RENVOYER bufJSON


--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM
Message modifié, 02 avril 2025 - 07:53
Membre enregistré
25 messages
Posté le 02 avril 2025 - 16:47
Merci Rubén !

ça à l'air de fonctionner ! juste dans info je ne vois pas bien le résultat tout est en ligne cependant ça a l'air bon.

Pour l'exporter dans un fichier en conservant le format JSON, une idée ? il faut passer par une chaine ou on peut l'exporter en JSON directement ?
Membre enregistré
25 messages
Posté le 02 avril 2025 - 17:33
J'ai rajouté ça à la fin j'ai un doute que ce soit bien interprété comme un fichier JSON (car je dois enregistrer un fichier au format JSON) :
le résultat : tout est sur une ligne
Donc en plus difficile de contrôler les données à l'intérieur
sMaChaine est une chaîne = JSONVersChaîne(jsDatos)
fSauveTexte("C:\test\MonFichierJSON.txt", sMaChaine)
Membre enregistré
890 messages
Posté le 02 avril 2025 - 19:52
Normalement, pour des raisons d'efficacité, le JSON est envoyé non formaté afin de réduire sa taille. Si vous souhaitez que le résultat soit formaté, utilisez le paramètre psdMiseEnForme pour indiquer que vous souhaitez qu'il soit formaté.

jsDatos.ToString(psdMiseEnForme) ou
JSONVersChaîne(jsDatos,psdMiseEnForme)

Rubén

--
https://depot.pcsoft.fr/search.awp…

https://www.linkedin.com/in/rub%C3%A9n-s%C3%A1nchez-pe%C3%B1a-7a868212/
https://play.google.com/store/apps/details…
Membre enregistré
25 messages
Posté le 02 avril 2025 - 20:35
Alors là, au Top Rubén !! :)
ça fonctionne... oui j'ai besoin qu'il soit formaté, car il sera intégré dans un logiciel manuellement dans un premier temps

Encore merci !

et Merci aussi à Voroltinquo d'avoir répondu ! la méthode de Rubén est quand même plus simple, je vais tester comme ça