Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
prog:lazarus:classes:json [19/04/2021 17:26]
thierry [Sources & Ressources]
prog:lazarus:classes:json [01/05/2021 17:20] (Version actuelle)
thierry [FindPath]
Ligne 1: Ligne 1:
 ====== JSON ====== ====== JSON ======
 +===== Créer un JSON =====
 +==== A partir d'un String ====
 +
 +<code delphi>
 +var
 +   vJD: TJsonData;
 +begin
 +   ​vJD ​   := GetJSON(AString);​
 +   try
 +      if assigned(vJD) then { Ok le JSON est valide }
 +        begin
 +        ...
 +        end;
 +   ​finally
 +       ​vJD.free;​
 +   end;
 +end;             
 +</​code>​
 +
 ===== Lire une valeur ===== ===== Lire une valeur =====
-==== Get ====+==== TJSonObject.Get ==== 
 + 
 +''​JSon.GET('​Nom element',​ VALEUR PAR DEFAUT);''​\\ 
 +ou\\ 
 +''​JSon.GET('​Nom element'​);''​... mais voir remarque ci-dessous !  
  
 <code delphi> <code delphi>
Ligne 24: Ligne 48:
  
 </​code>​ </​code>​
-==== FindPath ==== + 
-Pour récuperer le JSONArray version dans le JSON suivant :+<note tip>​Remarquez que chaque Function **Get** peut prendre un paramètre //​ADefault//​.\\  
 +C'est intéressant d'​utiliser ce paramètre pour 3 raisons : 
 +  - Il évite le déclenchement d'une exception si aucun élément de nom //AName// n'est trouvé. 
 +  - Il définit une valeur que sera retournée si aucun élément de nom //AName// n'est trouvé. 
 +  - Il permet de savoir quel **Get** on utilisera en fonction de son type.\\ Cela evite d'​appeler le **Get** générique qui passe par les Variants 
 +</​note>​ 
 +==== TJSonData.FindPath ==== 
 +Pour récuperer le JSONArray ​''​version'' ​dans le JSON suivant :
 <code javascript>​ <code javascript>​
 { {
Ligne 55: Ligne 86:
   if assigned(vJD) then Result:​=vJD.AsString;  ​   if assigned(vJD) then Result:​=vJD.AsString;  ​
 </​code>​ </​code>​
 +==== TJSonObject.Find (la sécurité) ====
 +Dans l'​exemple ci dessous on veut récupéré un eventuel JSonArray dans le JSonObject ''​vJO''​.
 +<code delphi>
 +var
 +   vJO: TJSONObject;​
 +   vJA: TJSonArray;
 +   ​vI: ​ integer;
 +   vS: string;
 +begin
 +   ...
 +      if vJO.Find('​dependencies',​vJA) then
 +         for vI := 0 to vJA.Count - 1 do
 +            vS:= vS+vJA.Strings[vI];​
 +   ...
 +end;            ​
 +</​code>​
 +''​TJsonObject.Find''​ fonctionne avec tous ces types :
 +<code delphi>
 +    Function Find(Const AName : String) : TJSONData; overload;
 +    Function Find(Const AName : String; AType : TJSONType) : TJSONData; overload;
 +    function Find(const key: TJSONStringType;​ out AValue: TJSONData): boolean;
 +    function Find(const key: TJSONStringType;​ out AValue: TJSONObject):​ boolean;
 +    function Find(const key: TJSONStringType;​ out AValue: TJSONArray):​ boolean;
 +    function Find(const key: TJSONStringType;​ out AValue: TJSONString):​ boolean;
 +    function Find(const key: TJSONStringType;​ out AValue: TJSONBoolean):​ boolean;
 +    function Find(const key: TJSONStringType;​ out AValue: TJSONNumber):​ boolean;
 +
 +</​code>​
 +
  
 ====== Sources & Ressources ====== ====== Sources & Ressources ======