|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
| Started by Laurent HERMANN, Feb., 12 2026 9:58 AM - 7 replies |
| |
| | | |
|
| |
Registered member 372 messages |
|
| Posted on February, 12 2026 - 9:58 AM |
bonjour,
je reçois d'un champs rtf la variable icfr que je mets en forme json :
sJSON est une chaîne = [ { "q":96, "i":"%1", "icfr":"%2" } ]
sJSON = ChaîneConstruit(sJSON, gnIDProjet, sICFR) sJSON = Remplace(sJSON,RC,"") Trace(sJSON) soit vJson = JSONVersVariant(sJSON)
{"q":96,"i":"10622","icfr":"{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}}{\*\generator Riched20 10.0.26100}\viewkind4\uc1 \pard\f0\fs23 lolo\par}"}
pour ensuite faire un appel à une API
le variant ne veut pas se faire je n'arrive pas à échapper les accolades...
une diée
merci
-- LH |
| |
| |
| | | |
|
| | |
| |
Registered member 314 messages |
|
| Posted on February, 12 2026 - 10:53 AM |
Bonjour, Essayes de passer directement par un type JSON
jJSON est un JSON jJSON.q = 96 jJSON.i = gnIDProjet jJSON.icfr = sICFR Trace(jJSON) soit vJson = JSONVersVariant(jJSON) Message modified, February, 12 2026 - 11:04 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 1,173 messages |
|
| Posted on February, 12 2026 - 2:11 PM |
Bonjour Laurent,
Cela ne peux pas pas fonctionner car en JSON les \ ouvrent une séquence d'échappement. Du coup \ansi et vu comme \a qui ne correspond à rien.
Il ne faut pas échapper les accolades.
Une solution serait de doubler les \.
Conseille : oublie le "soit vJson...." Contrôle le type d'emblée : vJson est un Variant...
Voici un code qui fonction (version 2026)
sJSON est une chaîne = [ { "q":96, "i":"%1", "icfr":"%2" } ]
sICFR est une chaîne=` {\rtf1\ANSI\ansicpg1252\deff0\nouicompat\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}}{\*\generator Riched20 10.0.26100}\viewkind4\uc1 \pard\f0\fs23 lolo\par} ` sICFR = Remplace(sICFR,"\","\\") sJSON = ChaîneConstruit(sJSON, 2, sICFR)
SI JSONValide(sJSON) ALORS vJson est un Variant = JSONVersVariant(sJSON) SINON Erreur("JSON invalide") FIN
PS : Jeudi prochain je fais une masterclass sur le format JSON
-- Thierry TILLIER Développeur WINDEV -WEBDEV Formation WINDEV : https://www.cours-windev-thierrytillier.com/ Tuto WINDEV sur ma chaîne YouTube |
| |
| |
| | | |
|
| | |
| |
Registered member 1,173 messages |
|
| Posted on February, 12 2026 - 2:13 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 314 messages |
|
| Posted on February, 12 2026 - 2:23 PM |
THIERRY TILLIER a écrit :
Bonjour Laurent, Cela ne peux pas pas fonctionner car en JSON les \ ouvrent une séquence d'échappement. Du coup \ansi et vu comme \a qui ne correspond à rien. Il ne faut pas échapper les accolades. Une solution serait de doubler les \. Conseille : oublie le "soit vJson...." Contrôle le type d'emblée : vJson est un Variant... Voici un code qui fonction (version 2026) sJSON est une chaîne = [ { "q":96, "i":"%1", "icfr":"%2" } ] sICFR est une chaîne=` {\rtf1\ANSI\ansicpg1252\deff0\nouicompat\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}}{\*\generator Riched20 10.0.26100}\viewkind4\uc1 \pard\f0\fs23 lolo\par} ` sICFR = Remplace(sICFR,"\","\\") sJSON = ChaîneConstruit(sJSON, 2, sICFR) // Test avant parse (si dispo dans ta version) SI JSONValide(sJSON) ALORS vJson est un Variant = JSONVersVariant(sJSON) SINON Erreur("JSON invalide") FIN PS : Jeudi prochain je fais une masterclass sur le format JSON -- Thierry TILLIER Développeur WINDEV -WEBDEV Formation WINDEV : https://www.cours-windev-thierrytillier.com/Tuto WINDEV sur ma chaîne YouTube
Désolé de te contredire Thierry mais ça fonctionne parfaitement avec un type JSON en WD2025 : Il est inutile de doubler les \ avec Remplace (le type JSON le gère automatiquement)
J'ai testé avec un champs RTF (comme l'a indiqué Laurent) :
SAI_RTF1 = "{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}}{\*\generator Riched20 10.0.26100}\viewkind4\uc1 \pard\f0\fs23 lolo\par}"
jJSON est un JSON jJSON.q = 96 jJSON.i = 10622 jJSON.icfr = SAI_RTF1
Trace("JSON = "+jJSON.VersChaîne())
Trace("") Trace("jJSON.icfr = "+jJSON.icfr)
soit vJson = JSONVersVariant(jJSON) Trace("") Trace("vJson.icfr = "+vJson.icfr)
Et voici ce que l'on obtient, le résultat est correct :
JSON = { "q":96, "i":10622, "icfr":"{\\rtf1\\ansi\\ansicpg1252\\deff0\\nouicompat\\deflang1036{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Calibri;}}\r\n{\\*\\generator Riched20 10.0.26100}\\viewkind4\\uc1 \r\n\\pard\\f0\\fs23 lolo\\par\r\n}\r\n" }
jJSON.icfr = {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}} {\*\generator Riched20 10.0.26100}\viewkind4\uc1 \pard\f0\fs23 lolo\par }
vJson.icfr = {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}} {\*\generator Riched20 10.0.26100}\viewkind4\uc1 \pard\f0\fs23 lolo\par }
CdltMessage modified, February, 12 2026 - 2:30 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 1,173 messages |
|
| Posted on February, 12 2026 - 4:18 PM |
Fabrice
Si tu regarde bien ton code la commande ; jJSON.VersChaîne() réalise le double échappement \\. Et comme Laurent veut utiliser ce JSON pour un API tu devras faire : MonhttpRequete est un httpRequete .... MonhttpRequete .Contenu= jJSON.VersChaîne() à vérifier avec une API.
C'est plus simple, en effet avec un type JSON. Je suis resté sur le code d'origine.
-- Thierry TILLIER Développeur WINDEV -WEBDEV Formation WINDEV : https://www.cours-windev-thierrytillier.com/ Tuto WINDEV sur ma chaîne YouTubeMessage modified, February, 12 2026 - 4:41 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 314 messages |
|
| Posted on February, 12 2026 - 5:15 PM |
Thierry,
Laurent souhaitait juste que la fonction JSONVersVariant() puisse s'exécuter "sans provoquer une exception" car je présume qu'il a besoin d'utiliser un variant dans l'API.
le variant ne veut pas se faire je n'arrive pas à échapper les accolades...
C'est la raison pour laquelle j'ai proposé le type JSON (et non une chaine) pour la fonction JSONVersVariant()
A lui de choisir la méthode qui lui conviendra le mieux.
Bon dév.. |
| |
| |
| | | |
|
| | |
| |
Registered member 372 messages |
|
| Posted on February, 13 2026 - 11:04 AM |
bonjour à tous et merci de vous être préoccupé de mon sort 
j'ai appliqué la façon du jsonversvariant sans que ça fcte
alors j'ai pris l'artillerie avec un encodebase64 coté client et decode coté api et au miracle
amazing !!
-- LH |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|