Personnellement, ton exemple j’aurais tendance à l’écrire de cette façon en JSON (ce n’est qu’une façon de faire parmi d’autres) :
Code : Tout sélectionner
{
"Membres" : {
"Parents" : {
"Maman" : {"Nom" : "Ratoux", "Prénom" : "Alice", "Âge" : 35},
"Papa" : {"Nom" : "Ratoux", "Prénom" : "Grégoire", "Âge" : 38}
},
"Enfants" : [
{"Nom" : "Ratoux", "Prénom" : "Amélie", "Âge" : 8},
{"Nom" : "Ratoux", "Prénom" : "Tom", "Âge" : 10},
{"Nom" : "Ratoux", "Prénom" : "Jasmine", "Âge" : 12},
]
},
"Maison" : {
"Adresse" : "24 Rue sains rule 49521 Nice",
"Pieces" : {
"Superficie" : 108,
"Composition" : [
{"Chambre" : 8},
{"Cuisine" : 1},
{"Salle de Bain" : 2},
{"Salon" : 3},
{"Garage" : 2},
{"WC" : 2}
]
}
}
}
Quelques remarques sur ce JSON :
— Touts les membres de la famille ont la même structure. (Nom, Prénom, Âge). En réalité ce sont tous des personnes. Ce qui peut être représenté en PureBasic par une structure du type :
— Je n’ai pas précisé « Ans » pour l’âge car c’est l’unité « par défaut » pour l’âge… En plus, le fait d’avoir une valeur numérique peut faciliter les traitements ultérieurs.
— Le groupage de « Maman » et de « Papa » dans un groupe « Parents » peut être facultatif Puisque « Maman » et « Papa » sont, par définition, des parents. Cette association n’est donc pas obligé de ressortir dans le JSON et peut être traité directement dans le programme.
— J’ai mis les enfants dans un tableau sans spécifier le numéro d’ordre. En effet il n’y a pas d’enfant plus important qu’un autre et on peut toujours retrouver cet ordre en faisant un tri par âge. (Tri facilité par l’utilisation d’une valeur numérique pour l’âge)
— Pour la maison je me suis permis d’introduire le concept de « composition ». L’unique but est de séparer les pièces de la superficie. (Il n’y a pas 108 m² pièces nommées « Superficie »…)
— Toujours pour la superficie (et comme pour l’âge) je me suis permis d’enlever l’unité pour des raisons équivalentes.
— Pour le détail de chaque pièce j’ai fait un objet par pièce mais c’est ici facultatif. L’idée c’est de facilement pouvoir ajouter d’autres détails (superficie de chaque pièce, couleur, nombres de prises, mobilier…). En l’état actuel tu peux très bien remplacer ça par un simple tableau associatif (map en PureBasic)
Code : Tout sélectionner
"Composition" : {
"Chambre" : 8,
"Cuisine" : 1,
"Salle de Bain" : 2,
"Salon" : 3,
"Garage" : 2,
"WC" : 2
}
NOTES :
— Pour l’âge selon le traitement à effectuer et la durée de vie de ton JSON il peut être plus intéressant de stocker la date de naissance (sous un format textuel facilement lisible ou sous forme de timestamp)
— Pour l’adresse, toujours selon le traitement à effectuer, il peut être intéressant de séparer le numéro, la rue, la vile et le code postal.
— Dans mon JSON j’ai bien mis « Âge » avec l’accent circonflexe sur le « A » mais vu que ce n’est une valeur utilisée qu’en interne et que le caractère « Â » prend plus de place en Utf-8 que le « A » ou le « a », tu peux l’omettre. En plus, ça te permettra d’avoir le même nom dans ta structure PureBasic et dans le JSON. (Même si «
age » n'as rien avoir avec âge.)
Attention tout texte affiché DOIT avoir les accents et autres diacritiques, y compris sur les majuscules. Ça évitera, entre autres, de confondre l'ancienneté des personnes avec leur nombre de pièces de charrues...