JSon (tech)

De Wiki1000
(Différences entre les versions)
Ligne 7 : Ligne 7 :
 
|-
 
|-
 
|[[AsString (TJSon)|AsString]]
 
|[[AsString (TJSon)|AsString]]
|Retourne le document sous forme chaîne
+
|Retourne le document sous forme chaîne.
 +
|-
 +
|[[ReadOnly (TJSon)|ReadOnly]]
 +
|Indique si le document est en lecture seule.
 
|}
 
|}
  
Ligne 14 : Ligne 17 :
 
|-
 
|-
 
|[[Create (TJSon)|Create]]
 
|[[Create (TJSon)|Create]]
|Création d'une instance de TJson
+
|Création d'une instance de TJSon.
 
|-
 
|-
 
|[[Assign (TJSon)|Assign]]
 
|[[Assign (TJSon)|Assign]]
|Remplace le contenu par le contenu d'un TJSon
+
|Remplace le contenu par le contenu d'un TJSon.
 
|-
 
|-
 
|[[Merge (TJSon)|Merge]]
 
|[[Merge (TJSon)|Merge]]
|Ajoute le contenu d'un TJSon
+
|Ajoute le contenu d'un TJSon.
 
|}
 
|}
 +
 +
===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 :
 +
 +
<source lang="Delphi">
 +
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;
 +
</source>
 +
 +
* 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 :
 +
 +
<source lang="Delphi">
 +
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;
 +
</source>
 +
 +
* Le membre email des structures employees est créé dynamiquement.
 +
 +
<source lang="Delphi">
 +
var json:TJSon;
 +
begin
 +
  json := TJSon.Create('');
 +
  json.customers[0].Id := CreateGUID;
 +
  json.customers[2].Id := CreateGUID;
 +
end;
 +
</source>
 +
 +
* 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:
 
Voir aussi:

Version du 6 décembre 2013 à 14:33

versionlatest-32x32.png

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.

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:





Whos here now:   Members 0   Guests 0   Bots & Crawlers 1
 
Outils personnels