PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → [WMobile] [Android] Pb de type avec jsonversvariant
[WMobile] [Android] Pb de type avec jsonversvariant
Débuté par FlorentU, 10 juil. 2017 18:06 - 18 réponses
Membre enregistré
8 messages
Posté le 10 juillet 2017 - 18:06
Bonjour,

Le pb suivant se pose uniquement en éxécution sur Android.

Si on considère le code suivant :

test est un Variant = JSONVersVariant(ChaîneVersUTF8("{T:""001""}}"))
Trace(test.T)


Je me demande pourquoi Windev m'affiche 1 et traite ma données comme un numérique. Si je mets des gruillements double dans mon json, c'est bien parce que je veux une chaine et pas un entier !

Est-ce un bug ou une fonctionnalité cachée ? Qq un aurait-il une solution de contournemebnt ?

Merci d'avance.

Cordialement,
Florent
Membre enregistré
8 messages
Posté le 10 juillet 2017 - 18:30
A noter que le même test en remplaçant 0000100001 affiche 32769 (la valeur décimal de 0000100001 en base octale) :D
Membre enregistré
151 messages
Popularité : +7 (7 votes)
Posté le 11 juillet 2017 - 15:12
Bienvenue dans le monde merveilleux de JSONVersVariant... 8)

Avez-vous essayé la bidouille suivante ?

test est un Variant = JSONVersVariant(ChaîneVersUTF8("{T:""001""}}"))
strt est une chaîne = test.T
Trace(strt)
Membre enregistré
8 messages
Posté le 12 juillet 2017 - 09:21
Pas mieux malheureusement...
Membre enregistré
8 messages
Posté le 12 juillet 2017 - 10:00
J'ai fait un ticket au support technique, wait and see....
Posté le 26 juillet 2017 - 14:22
Bonjour,
je me trouve dans la même situation qui est très embêtante...
Avez-vous eu une réponse du support technique ?

Cordialement.
Membre enregistré
8 messages
Posté le 26 juillet 2017 - 15:03
Bonjour,
C'est en cours : "J’ai lu votre description avec attention et je vous remercie pour sa précision. J’ai immédiatement enregistré et transmis vos éléments à notre équipe Développement et à notre équipe Qualité."
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 26 juillet 2017 - 18:00
Bonjour,

MaChaine est une chaîne ANSI = [
{
"T": "001"
}
]

soit test=JSONVersVariant(MaChaine)

POUR TOUT _Membre de test..Membre
Trace(_Membre..Nom + " = " + _Membre..Valeur)
FIN


Cdlt,
Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Message modifié, 26 juillet 2017 - 18:01
Membre enregistré
8 messages
Posté le 27 juillet 2017 - 09:19
Bonjour,

Non Eric ce n'est pas aussi simple... Avez vous testé votre code sur Android ?

Cordialement,
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 27 juillet 2017 - 10:37
Bonjour Florent,

Oui j'ai testé. J'obtiens bien "001" dans la fenêtre trace.

Ceci dit, je ne suis pas du tout à l'aise avec JSON et je me suis juste inspiré de la doc. Peut-être n''est-ce pas applicable dans votre cas ?

A ce sujet, toujours en V22 / android, votre bout de code ne fonctionne pas. Avec ce code :
test est un Variant = JSONVersVariant(ChaîneVersUTF8("{T:""001""}}"))
Trace(test.T)

j'obtiens une erreur format json invalide. Si cela peut vous aider...

Cdlt - Eric.






--
Eric DELATTRE
http://www.yoosite.fr
Message modifié, 27 juillet 2017 - 10:38
Membre enregistré
8 messages
Posté le 27 juillet 2017 - 12:12
Oui effectivement le bout de code que j'ai fournis est invalide. Voici le code corrigé :
test est un Variant = JSONVersVariant(ChaîneVersUTF8("{""T"":""001""}"))
strt est une chaîne = test.T
Trace(strt)


D'après votre capture d'écran, je vois que vous travaillez dans le simulateur. Le pb que j'expose se pose uniquement en exécution sur un appareil Android.

Cordialement,
Posté le 27 juillet 2017 - 14:13
Je confirme que ce problème intervient seulement sur un appareil Android.
Sur iOS le code semble fonctionner.

J'ai aussi fait une requête au support technique en ayant joint un projet de démonstration. J'espère que ce problème sera corrigé au plus vite...
Posté le 27 juillet 2017 - 14:15
PS: encore plus surprenant:

Le problème n'intervient pas si le chiffre commence par 8 ou 9 (ex: "008" ou "09" etc.) !!!
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 27 juillet 2017 - 15:54
Florent,

Je n'avais effectivement pas testé sur un device. Je confirme donc l'anomalie.

Cdlt - Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Membre enregistré
8 messages
Posté le 28 juillet 2017 - 11:42
Voici, le correctif pour l'update 4 71k fournit par le support technique :
http://stg.webdev.info/Telechargement_Support_WEB/FR/telec_ST.awp…

A décompresser en conservant l'arborescence dans le dossier \Programmes\ de WinDev Mobile 22...
Posté le 16 mars 2018 - 16:08
Bonjour,

J'avais rencontré ce problème également, je l'avais solutionné grâce à un workaround , mais j'ai désormais le problème suivant : JSONVersVariant ne semble pas fonctionner correctement avec l'alphabet russe. Pour tester il suffit de copier le code suivant dans l'initialisation d'un projet windev mobile

Nation(nationRusse)
ChangeAlphabet(alphabetRusse)

res est un Variant

sString est une chaîne ANSI = [

{"test":"????? ??????? ?????"}

]

res = JSONVersVariant(sString)
Trace(sString)
Trace(res.test)


Avez-vous une idée pour contourner ce soucis ?

Merci d'avance
Posté le 16 mars 2018 - 17:14
Il suffit de lire la doc de la fonction JSONVersVariant :
<Données JSON> : Chaîne de caractères ANSI encodé en ASCII 7 bits + encodage JSON ou UTF-8

Pour votre cas il faut donc faire :
res = JSONVersVariant(ChaineVersUTF8(sString))
Posté le 16 mars 2018 - 17:28
Le russe ne s'affiche pas correctement sur le forum quand on utilise la fonction code , il faut remplacer les ???? par Самый Главный Актив
Posté le 20 mars 2018 - 16:44
Super merci, cela fonctionne dans le simulateur, bizarre que pour les autres langues cela fonctionne sans chaineversutf8