PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Désérialisation d'objets aux paramètres inconnus
Désérialisation d'objets aux paramètres inconnus
Débuté par Paul, 28 sep. 2016 13:26 - 3 réponses
Membre enregistré
10 messages
Posté le 28 septembre 2016 - 13:26
Bonjour,

Je cherche actuellement à désérialiser mon json dans un objet qui aura des membres de type structure.
Exemple:
{
"titre":"nom",
"tabNomChamp": {
"col_id": "tpr_id",
"col_bl": "num_commande",
"col_cb": "param_cb",
"col_client": "tpr_id",
"col5": "tpr_photo",
"col_photo": "tpr_photo"
}
}


Ce que je faisais jusque là c'était de désérialiser dans un objet qui a un membre de type string et un autre qui est une structure définie de cette manière:

strucString is structure
col_id is string
col_bl is string
col_cb is string
col_client is string
col5 is string
col_photo is string
FIN

Le problème maintenant est que le nombre de champ et le nom des champs de ma structure sont variables. Je récupère les libellés dans un tableau et j'aimerais pouvoir créer une structure en fonction de ce tableau, ou bien avoir une solution alternative pour désérialiser: si je ne me trompe pas, tabNomChamp étant un objet, je ne peut le désérialiser que dans une structure ou un objet.

Il y a peut être une solution avec des opérateurs d'indirection, mais je ne la vois pas, c'est pourquoi je recherche un petit coup de main.

Merci d'avance,

Cordialement,

Paul
Membre enregistré
256 messages
Popularité : +29 (29 votes)
Posté le 28 septembre 2016 - 14:25
Bonjour

Vous pouvez utiliser le type Variant
v est un variant
v = JSONVersVariant(...)

Les membres du variant sont :
- soit accessibles directement : v.tabNomChamp.col_id
- soit explorables récursivement grâce à la propriété ..Membre qui renvoie le tableau des sous-membres
Membre enregistré
10 messages
Posté le 28 septembre 2016 - 14:28
Merci pour votre réponse Yann

Malheureusement, je développe sur windev mobile pour android et le type variant n'y est pas disponible.
Membre enregistré
10 messages
Posté le 10 octobre 2016 - 10:02
Bon j'ai résolu mon problème grâce à cette contribution:
http://repository.windev.com/resource.awp?file_id=200;json-utilities-from-hilario-perez-corona

La procédure parse le json dans un tableau associatif. En remplaçant les variables de type variant en variables de type string, on peut accéder aux éléments de cette façon:
arrayGénérée["elem.sousElem"]

Et comme c'est bien fait, pour chaque tableau/objet json, ça me génère ceci:
arrayGénérée["tab.count"]

qui me renvoie le nombre de sous éléments.