FORUMS PROFESSIONNELS
WINDEV
,
WEBDEV
et
WINDEV Mobile
Accueil
|
Messages récents
|
Connexion
|
Déconnexion
|
Français
Accueil
→
WINDEV 2024
→
JSONVersVariant : cas d'erreur
JSONVersVariant : cas d'erreur
Débuté par Christophe PRADEL, 21 mar. 2018 14:24 - 3 réponses
Connectez-vous…
Christophe PRADEL
#1
Posté le 21 mars 2018 - 14:24
Bonjour à toutes et tous
J'ai découvert avec bonheur l'utilisation très souple de VariantVersJSON et JSONVersVariant
Je rencontre cependant un problème et je sollicite vos bonnes idées pour le contourner.
Le contexte :
Je travaille avec une classe TMaClasse
- j'instancie un objet monObjet de type TMaclasse
- je l'alimente
- j'extrais sa version JSON par sChaine = VariantVersJSON(monObjet)
- je sauvegarde la chaîne en base de données
Puis, plus tard...
- je relis la chaîne sChaine depuis ma base de données
- je crée un objet monNouvelObjet de type TMaclasse
- je le charge avec monNouvelObjet = JSONVersVariant(sChaine)
Niquel, ça marche !
Le problème :
Il se trouve que la classe TMaClasse a évolué : elle contient un membre sNouveauMembre supplémentaire.
lorsque je tente le JSONVersVariant depuis la chaine vers la nouvcelle structure, j'ai une exception parceque la propriété sNouveauMembre est absente de la chaîne JSON !
Y aurait-il un moyen élégant de gérer ce type d'erreur ?
Je souhaiterais que mon objet s'alimente "au mieux" en fonction du contenu réel de la chaîne JSON, c'est à dire, dans mon cas, remplir tous les membres de mon objet sauf le membre sNouveauMembre
En espérant avoir été assez, clair, je suis tout ouïe de vos idées
Signaler
0
0
Yann
#2
Membre enregistré
256 messages
Popularité : +29 (29 votes)
Posté le 21 mars 2018 - 17:56
Bonjour
Vous pouvez utiliser les fonctions Sérialise et Désérialise avec l'option psdJSON.
Signaler
0
0
Christophe PRADEL
#3
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 22 mars 2018 - 08:08
Merci Yann pour ta réponse.
En effet, avec Sérialise et Désérialise, ça marche !
En désérialisation,
- si des propriétés sérialisées n'existent pas dans l'objet cible, elles sont ignorées
- si des propriétés de l'objet n'existent pas dans la sérialisation, ces propriétés ne sont pas impactées.
Et plus d'erreur générée !
Cela rend bien sûr un peu obsolète l'utilisation de JSONVersVariant et VariantVersJSON, sauf si dans les prochaines versions, une option était ajoutée à ces fonctions pour permettre un traitement strict ou souple du principe sous-jacent de sérialisation/désérialisation.
Signaler
0
0
Christophe PRADEL
#4
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 22 mars 2018 - 08:56
Petit complément :
En poussant mes tests, il s'avère que la fonction désérialise soit plus limitée que la fonction JSONVersVariant
Elle ne supporte notamment pas les éléments de type tableau associatif, ce qu permet VariantVersJSON et JSONVersVariant
Signaler
0
0
→ Revenir à WINDEV 2024
WINDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (précédentes versions)
WEBDEV (précédentes versions)
WINDEV Mobile (précédentes versions)
Etats & Requêtes
Hors-sujet
Outils
Français
English
Español
Portuguesa
Fermer cette fenêtre
Type de recherche
Uniquement les sujets
Tous les messages
Période de recherche
Date indifférente
Moins d'une heure
Moins de 24 heures
Moins d'une semaine
Moins d'un mois
Moins d'un an
Annuler
Aperçu de votre message
Ajouter une image
Importer une image depuis une URL
Envoyer une image depuis un fichier de votre disque
Déposez ici un fichier ou cliquez sur "Parcourir..."
ou
Annuler
0%
WLangage
SQL
XML, HTML
JAVA, Javascript
Texte