PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

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-Pierre
Message modifié, 16 mai 2025 - 09:49