JSon (tech)
De Wiki1000
(Différences entre les versions)
m (Remplacement du texte — « http://frp.sage.fr/wiki1000/medias/images/stock/versionlatest-32x32.png » par « http://frp.sage.fr/wiki1000/medias/images/stock/version700-32x32.png ») |
|||
Ligne 93 : | Ligne 93 : | ||
* Le membre "Id" de créé dynamqiquement | * Le membre "Id" de créé dynamqiquement | ||
* Le tableau est complété des lignes manquante, ici la ligne 1. | * Le tableau est complété des lignes manquante, ici la ligne 1. | ||
+ | |||
+ | {{tip|Il est recommandé de passer par un variant pour éviter des exceptions de conversions. | ||
+ | |||
+ | <source lang="Delphi"> | ||
+ | var json:TJSon; v : variant; | ||
+ | begin | ||
+ | //... | ||
+ | v := json.employees[idx].email;//email peut exister mais être null ou indéfini | ||
+ | if VarType(v)=varString then | ||
+ | email := VarToStr(v); | ||
+ | |||
+ | end; | ||
+ | </source> | ||
+ | |||
+ | }} | ||
+ | |||
Voir aussi: | Voir aussi: |
Version du 25 novembre 2016 à 09:04
TJson est un objet technique permettant de manipuler des documents JSON
Propriétés
AsString | Retourne le document sous forme chaîne. |
ReadOnly | Indique si le document est en lecture seule. |
Opérations
Create | Création d'une instance de TJSon. |
Assign | Remplace le contenu par le contenu d'un TJSon. |
Merge | Ajoute le contenu d'un TJSon. |
CopyToClipBoard | Copie le document dans le presse papier. |
Exists | Teste si un membre existe. |
Manipulation d'un document JSon
La particularité des documents JSon est que le contrôle de structure est réalisé à l'exécution. ceci permet d'accéder au membre du document directement par la notation pointé.
Par exemple dans l'exemple suivant :
var json:TJSon; email:string; begin json := TJSon.Create( '{ "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] }'); email := json.employees[0].email; end;
- On accède directement au tableau "employees" sans déclaration préalable.
- Il ni a pas d'erreur de compilation même si le membre email n'existe pas ou si l'indice dépasse l'étendu du tableau.
Si le document n'est pas en lecture seule il est possible de construire dynamiquement un document JSON.
Par exemple :
var json:TJSon; idx:Integer; begin json := TJSon.Create( '{ "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] }'); json.ReadOnly := false; for idx:=0 to json.employees.count-1 do begin json.employees[idx].email := Format('%s.%[email protected]',[json.employees[idx].firstName,[son.employees[idx].lastName]); end; end;
- Le membre email des structures employees est créé dynamiquement.
var json:TJSon; begin json := TJSon.Create(''); json.customers[0].Id := CreateGUID; json.customers[2].Id := CreateGUID; end;
- Le tableau "customers" est créé dynamiquement
- La structure associée au ligne du tableau est créée dynamiquement
- Le membre "Id" de créé dynamqiquement
- Le tableau est complété des lignes manquante, ici la ligne 1.
Voir aussi: