|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
| Souci format date entre json et variant |
| Iniciado por Julien V, 06,abr. 2020 08:32 - 2 respuestas |
| |
| | | |
|
| |
Miembro registrado 134 mensajes |
|
| Publicado el 06,abril 2020 - 08:32 |
Bonjour,
Je rencontre actuellement un souci de formatage de date avec les fonctions Windev VariantVersJSON et JSONVersVariant. Le VariantVersJSON me sérialise un membre de Variant de type date au format AAAA-MM-JJ Le JSONVersVariant me renvoie du coup une valeur qui ne sera pas reconnue pour mes futurs traitements.
Ci-dessous mon test unitaire :
date est une Date date = "20200406"
index est un Variant index.date = date Trace( "index.date : " + index.date )
JSON est un JSON JSON = VariantVersJSON( index ) Trace( "json après VariantVersJSON : " + JSON )
index = JSONVersVariant( JSON ) Trace( "index.date après JSONVersVariant : " + index.date )
Si je remplace date = "20200406" par date = Datesys(), j'obtiens le même résultat. Par contre si je remplace index.date = Datesys(), le résultat est correct :
index est un Variant index.date = DateSys() Trace( "index.date : " + index.date )
JSON est un JSON JSON = VariantVersJSON( index ) Trace( "json après VariantVersJSON : " + JSON )
index = JSONVersVariant( JSON ) Trace( "index.date après JSONVersVariant : " + index.date )
Y-a-t-il un moyen de préserver la date au format AAAAMMJJ pendant les phases de conversion ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 499 mensajes |
|
| Publicado el 06,abril 2020 - 09:01 |
Bonjour,
Dans votre premier exemple, vous assignez une variable de type date directement dans le variant. La fonction VariantVersJSON fait alors une sérialisation de la variable de type Date dans le format le plus commun en terme d'interopérabilité (format ISO 8601 https://fr.wikipedia.org/wiki/ISO_8601).
Dans le second exemple, DateSys() renvoie avant tout une chaîne, donc la fonction VariantVersJSON n'y opère pas de transformation particulière (car elle ne "sait pas" que la chaine contient réellement une date).
Vous pouvez donc régler votre problème simplement en forçant la transformation en chaine avant d'envoyer la variable dans le variant. Cela peut se faire avec une concaténation avec une chaine préalable :
date est une Date date = "20200406"
index est un Variant index.date = ("" + date) Trace( "index.date : " + index.date )
JSON est un JSON JSON = VariantVersJSON( index ) Trace( "json après VariantVersJSON : " + JSON )
index = JSONVersVariant( JSON ) Trace( "index.date après JSONVersVariant : " + index.date )
|
| |
| |
| | | |
|
| | |
| |
Miembro registrado 134 mensajes |
|
| Publicado el 06,abril 2020 - 10:13 |
Bonjour Benjamin,
Merci pour cette réponse très claire, effectivement en forçant en chaîne ça fonctionne.
Je ne savais pas que DateSys castait implicitement en chaîne de caractères.
Bonne journée ! |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|