|
| Accueil → WINDEV 2025 → Problème d'échappement des guillemets doubles dans une chaîne (ex: "status":"OK" dans la fonction Position) Bonjour à tous les développeurs WinDev, |
| Problème d'échappement des guillemets doubles dans une chaîne (ex: "status":"OK" dans la fonction Position) Bonjour à tous les développeurs WinDev, |
| Débuté par Sead Grbesic, 15 mai 2025 18:15 - 1 réponse |
| |
| | | |
|
| |
| Posté le 15 mai 2025 - 18:15 |
Bonjour à tous les développeurs WinDev,
Je travaille sur un projet REST en WinDev. Dans certains cas, je reçois une réponse JSON sous forme de chaîne, et je veux simplement vérifier si une portion de texte comme `"status":"OK"` existe dans cette chaîne, en utilisant la fonction Position().
Mais à chaque fois que j’essaie d’écrire ce texte dans la chaîne littérale, j’obtiens des erreurs de syntaxe. Par exemple, cette ligne :
SI Position(sResultat, "{\"status\":\"OK\"}") = 0 ALORS ...
provoque une erreur de type : "Erreur de syntaxe sur la chaîne : peut être causée par un caractère \" qui doit être écrit deux fois dans la chaîne ou par une erreur de syntaxe après la chaîne".
J’ai essayé plusieurs approches : - Doubler les guillemets (`""`) - Utiliser des antislashs (`\"`) - Passer la chaîne entière entre apostrophes simples
Par exemple :
SI Position(sResultat, '"status":"OK"') = 0 ALORS ...
ou bien :
SI Position(sResultat, "[{\"status\":\"OK\"}]") = 0 ALORS ...
Mais toutes donnent une erreur comme « ligne incomplète » ou « syntaxe non compatible ».
Je suis conscient que WLangage est strict avec les chaînes contenant des caractères spéciaux, surtout les guillemets et les antislashs. C’est pourquoi je cherche :
1. La bonne façon d’écrire ou d’échapper une chaîne contenant des guillemets doubles autour des clés et valeurs JSON, pour l’utiliser dans une fonction comme Position() ou Contient(). 2. Un lien vers une documentation (officielle ou communautaire) avec des exemples d’échappement des guillemets dans les chaînes WLangage. 3. (Optionnel) Une recommandation de contournement : par exemple, serait-il préférable de convertir la chaîne JSON en variant avec JSONVersVariant() et vérifier `vReponse[1].status = "OK"` ?
À titre d’exemple, le contenu JSON retourné ressemble à ceci :
[{"status":"OK", "message":"Opération réussie"}]
Et je veux juste m’assurer que `status = OK`.
Merci d’avance pour vos conseils, vos solutions ou vos expériences sur ce sujet. C’est un détail qui me fait perdre du temps 😅.
Bien cordialement, Sead |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 299 messages |
|
| Posté le 16 mai 2025 - 09:48 |
Bonjour Sead,
Ce code semble marcher :
sResultat est une chaîne =`[{"status":"OK", "message":"Opération réussie"}]` SI Position(sResultat, `["status":"OK"]`) = 0 ALORS Info("OK") SINON Info("KO") FIN cf. https://doc.pcsoft.fr/?1512011 -- Bon dev, Jean-PierreMessage modifié, 16 mai 2025 - 09:49 |
| |
| |
| | | |
|
| | | | |
| | |
|