PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → un cas deserialise
un cas deserialise
Débuté par Bertrand SOUBEYRAND, 24 juil. 2017 16:21 - 7 réponses
Membre enregistré
11 messages
Posté le 24 juillet 2017 - 16:21
Bonjour,

Comment dois-je m'y prendre pour deserialiser ce JSON dans un tableau texte ? Ensuite pour chaque élément je pense pouvoir refaire un coup de deserialise.


[
{
"nom": "DUPOND",
"prenom": "Jean"
},
{
"nom": "DURAND",
"prenom": "Alb€rt"
},
{
"nom": "LEJAMBON",
"prenom": "Polo"
}
]


--
Bertrand SOUBEYRAND
La Soub Compagnie
Tél. : +33 4 84 25 21 99
Membre enregistré
151 messages
Popularité : +7 (7 votes)
Posté le 24 juillet 2017 - 16:27
Bonjour,

une solution parmi les autres, vous pouvez utiliser JSONVersVariant

monvariant est Variant = JSONVersVariant(ChaîneVersUTF8("...... votre code JSON ici ......."))

POUR pos = 1 _A_ monvariant..Occurrence
Trace(monvariant[pos].nom)
Trace(monvariant[pos].prenom)
FIN


A vous de remplacer les "Trace" par un ajout dans un tableau.
Membre enregistré
11 messages
Posté le 25 juillet 2017 - 16:14
je n'y arrive pas.

Je précise à toute fin utile que le JSON est fabriqué sur un serveur lambda comme le montre la requête http

ResStart is a boolean
ResStart = HTTPRequest("192.168.0.91/w22_all_records/")

IF ResStart = True THEN

bufbuffer is Buffer = HTTPGetResult()
jz is Variant = JSONToVariant(StringToUTF8(bufbuffer))

END


--
Bertrand SOUBEYRAND
La Soub Compagnie
Tél. : +33 4 84 25 21 99
Membre enregistré
151 messages
Popularité : +7 (7 votes)
Posté le 25 juillet 2017 - 16:18
Qu'entendez-vous par "je n'y arrive pas" ?

Y a-t-il un message d'erreur? Une exception?
Est-ce que "ResStart" vaut True?
Avez-vous mis un point d'arrêt sur la ligne qui assigne "jz"? Et regardé ce qu'il y avait dedans?
Membre enregistré
11 messages
Posté le 25 juillet 2017 - 16:35
Oui je ne suis pas précis :
la requête http marche bien et dans la variable bufbuffer je vois bien le contenu JSON. C'est après que ça coince.

Je voudrais placer dans des variables les noms et prénoms

--
Bertrand SOUBEYRAND
La Soub Compagnie
Tél. : +33 4 84 25 21 99
Membre enregistré
11 messages
Posté le 25 juillet 2017 - 16:41
si je fais l'exemple https://doc.windev.com/en-US/… de la doc (en supprimant le 'let') ça semble ne pas fonctionner non plus

--
Bertrand SOUBEYRAND
La Soub Compagnie
Tél. : +33 4 84 25 21 99
Posté le 26 juillet 2017 - 12:00
Bonjour

Si je ne me trompe pas, ton json devrait être :
{
"nom": "DUPOND",
"prenom": "Jean"
},
{
"nom": "DURAND",
"prenom": "Alb€rt"
},
{
"nom": "LEJAMBON",
"prenom": "Polo"
}

Les [] sont en trop. Comme le dit Gael, tu passes par les variants ou tu fait une deserialisation sur un tableau de structure.

Cdt
Membre enregistré
11 messages
Posté le 27 juillet 2017 - 09:50
A présent ça marche sans bien comprendre pourquoi avant ce n'était pas le cas.

Je confirme qu'il ne faut pas supprimer les [ ] du JSON

Pour un prochain malheureux qui aurait ce problème voici le code :

ResStart is a boolean
ResStart = HTTPRequest("192.168.0.91/w22_all_records/")

sAstring is ANSI string = HTTPGetResult()

monvariant is Variant = JSONToVariant(StringToUTF8(sAstring))

FOR pos = 1 _TO_ monvariant..Occurrence
Trace(monvariant[pos].nom)
Trace(monvariant[pos].prenom)
END


Le JSON est celui mentionné plus haut
--
Bertrand SOUBEYRAND
La Soub Compagnie
Tél. : +33 4 84 25 21 99
Message modifié, 27 juillet 2017 - 09:51