Ceci est une ancienne révision du document !
JSON
Créer un JSON
A partir d'un String
var vJD: TJsonData; begin vJD := GetJSON(AString); try if assigned(vJD) then { Ok le JSON est valide } begin ... end; finally vJD.free; end; end;
Lire une valeur
Get
var vJO: TJSonObject; begin FBigEndian:=vJO.Get('bendian',false); end;
Fonctionne sur :
- fpjson.pp
Function Get(Const AName : String) : Variant; Function Get(Const AName : String; ADefault : TJSONFloat) : TJSONFloat; Function Get(Const AName : String; ADefault : Integer) : Integer; Function Get(Const AName : String; ADefault : Int64) : Int64; Function Get(Const AName : String; ADefault : QWord) : QWord; Function Get(Const AName : String; ADefault : Boolean) : Boolean; Function Get(Const AName : String; ADefault : TJSONStringType) : TJSONStringType; Function Get(Const AName : String; ADefault : TJSONUnicodeStringType) : TJSONUnicodeStringType; Function Get(Const AName : String; ADefault : TJSONArray) : TJSONArray; Function Get(Const AName : String; ADefault : TJSONObject) : TJSONObject;
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
FindPath
Pour récuperer le JSONArray version dans le JSON suivant :
{ "json_format_version": [ 1, 0 ], "smartctl": { "version": [ 7, 2 ], "svn_revision": "5155", "build_info": "(sf-7.2-1)", "exit_status": 0 } }
On peut utiliser le code ci-dessous (TJsonData.FindPath
):
vJSA:=TJSONArray(OutJSON.FindPath('smartctl.version'));
Pour avoir seulement le 7
:
var vJD: TJSonData; ... vJD:= OutJSON.FindPath('smartctl.version[0]'); if assigned(vJD) then Result:=vJD.AsString;
Sources & Ressources
Vous pourriez laisser un commentaire si vous étiez connecté.