
DataSet Serialize est un ensemble de fonctionnalités pour faciliter le travail avec JSON et le jeu de données. Il dispose de fonctionnalités telles que l'exportation ou l'importation d'enregistrements dans un ensemble de données, valider si JSON a tous les attributs requis (précédemment entrés dans l'ensemble de données), exportant ou importation de la structure des champs de jeu de données au format JSON. En plus de gérer le JSON imbriqué via Master Detail ou de l'utilisation de TdatasetField (vous choisissez la façon dont cela vous convient le mieux). Tout cela en utilisant des aides de classe, ce qui le rend encore plus simple et plus facile à utiliser.
[Optional] Pour faciliter la facilité, je recommande d'utiliser le boss (Dependency Manager pour Delphi) pour l'installation, simplement en exécutant la commande ci-dessous sur un terminal (Windows PowerShell par exemple): boss install github.com/viniciussanchez/dataset-serialize
Si vous choisissez d'installer manuellement, ajoutez simplement les dossiers suivants à votre projet, dans le projet> Options> Building> Compiler Delphi> Chemin de recherche
../dataset-serialize/src
Toutes les fonctionnalités offertes par DataSet Serialize sont situées dans l'assistant de classe dans un ensemble de données. Pour démarrer votre projet, ajoutez simplement votre référence là où votre fonctionnalité est nécessaire. Voici un exemple:
uses DataSet.Serialize;Examinons maintenant chaque fonctionnalité, ses règles et ses particularités, pour fournir le meilleur à tous les utilisateurs.
La création d'un objet JSON avec des informations à partir d'un enregistrement d'ensemble de données semble être une tâche très simple. Mais cette tâche est devenue plus facile. DataSet Serialize a deux fonctions à ce sujet, à savoir TOJSONObject et TOJSONArray. Regardons l'utilisation des fonctions:
var
LJSONArray: TJSONArray;
LJSONObject: TJSONObject;
begin
LJSONObject := qrySamples.ToJSONObject(); // export a single record
LJSONArray := qrySamples.ToJSONArray(); // export all records
end ;Quelle est la différence entre les deux fonctions? TOJSONObject ne convertira que l'enregistrement de jeu de données actuel en un TJSONObject. TOJSONArray se convertira en TJSONArray tous les enregistrements de l'ensemble de données et pas seulement l'enregistrement sélectionné.
Paramètres
AChildRecords - indique d'exporter ou non les enregistrements d'enfants (via Master Detail ou Tdatasetfield).AOnlyUpdatedRecords - indique s'il faut exporter uniquement des enregistrements qui ont été modifiés (enregistrements ajoutés, modifiés ou supprimés). Cette fonctionnalité n'est disponible que lors de l'utilisation de FIREDAC. La propriété CachedUpdates doit être vraie;TojsonObject
{} ) sera renvoyé;Tojsonarray
[] ) sera retourné;Une caractéristique pas très utile mais importante est la saustructure et la structure de charge. Comme son nom l'a déjà dit, il est possible de sauvegarder toute la structure des champs configurés dans l'ensemble de données et de charger également une structure au format JSON. Voici un exemple de la façon de charger et d'exporter des champs de jeu de données:
var
LJSONArray: TJSONArray;
begin
LJSONArray := qrySamples.SaveStructure;
qrySamples.LoadStructure(LJSONArray, True);
end ;Les propriétés suivantes sont contrôlées:
Alignment, FieldName, DisplayLabel, DataType, Size, Key, Origin, Required, Visible, ReadOnly, and AutoGenerateValue ;
Paramètres
AOwns - indique qui est responsable de détruire le JSON passé en tant que paramètre.Saustructure
[] ) sera renvoyé;Structure de chargement
La fonction Validatejson est très utile lorsque nous voulons valider sur un serveur par exemple si le JSON que nous avons reçu dans la demande a toutes les informations requises. Pratiquement, tous les champs de l'ensemble de données sont traversés, vérifiant si les champs requis ont été entrés en JSON. Si le champ est requis et n'a pas été entré dans JSON, il sera ajouté au tableau JSON renvoyé par la fonction. Voir l'exemple ci-dessous:
begin
LJSONArray := qrySamples.ValidateJSON( ' {"country":"Brazil"} ' );
end ; Lors de la réception de {"country": "Brazil"} , en supposant que notre ensemble de données a 3 champs (id, first_name, country), et le champ ID et First_name est requis, ce qui suit sera retourné:
[{"field":"id","error":"Id not informed"},{"field":"firstName","error":"Name not informed"}]
Paramètres
ALang - responsable du changement de la langue utilisée dans l'assemblage des messages (par défaut est l'anglais);AOwns - indique qui est responsable de détruire le JSON passé en tant que paramètre;Validerjson
[] ) est renvoyé;L'ensemble de données Serializa vous permet de charger un ensemble de données avec un JSONObject, JSONArray et même un JSON imbriqué tous résumé en une méthode: LoadFromjson (). Voici un exemple de la façon de l'utiliser:
begin
qrySamples.LoadFromJSON( ' {"firstName":"Vinicius Sanchez","country":"Brazil"} ' );
end ;Paramètres
AOwns - indique qui est responsable de détruire le JSON passé en tant que paramètre;Loadfromjson
Avec SERIALIZE DE DATAASET, vous pouvez toujours modifier l'enregistrement de l'ensemble de données simplement en utilisant MergeFromJSonObject. La fonction est similaire à LoadFromjson. Un exemple d'utilisation est pour les serveurs de repos lorsque le verbe utilisé dans la demande est mis (pas nécessairement), dans ce cas, nous ne voulons pas inclure un nouvel enregistrement mais pour modifier l'enregistrement actuel.
begin
qrySamples.MergeFromJSONObject( ' {"firstName":"Vinicius","country":"United States"} ' );
end ;Paramètres
AOwns - indique qui est responsable de détruire le JSON passé en tant que paramètre;MergefromjsonObject
Vous pouvez personnaliser certaines fonctionnalités de la série de données:
TDataSetSerializeConfig.GetInstance.DateInputIsUTC := True; TDataSetSerializeConfig.GetInstance. Export .ExportNullValues := True; TDataSetSerializeConfig.GetInstance. Export .TryConvertStringToJson := True; TDataSetSerializeConfig.GetInstance. Export .ExportOnlyFieldsVisible := True; TDataSetSerializeConfig.GetInstance. Export .ExportChildDataSetAsJsonObject := False; TDataSetSerializeConfig.GetInstance. Export .ExportLargeIntAsString := False; TDataSetSerializeConfig.GetInstance. Export .ExportBCDAsFloat := False; TDataSetSerializeConfig.GetInstance. Import .ImportOnlyFieldsVisible := True; TDataSetSerializeConfig.GetInstance. Import .DecodeBase64BlobField := True; TDataSetSerializeConfig.GetInstance.RemoveBlankSpaceFieldName := True; // default // cndNone, cndLower, cndUpper, cndLowerCamelCase, cndUpperCamelCase
TDataSetSerializeConfig.GetInstance.CaseNameDefinition := TCaseNameDefinition.cndLowerCamelCase;
TCaseNameDefinition.cndNone:
[ { "MOB_ICADASTRO":11795,"MOB_EMI_REG":6,"CODIGODOCLIENTE":1,"CDOCUMEN1":"999999" } ]
TCaseNameDefinition.cndLower:
[ { "mob_icadastro":11795,"mob_emi_reg":6,"codigodocliente":1,"cdocumen1":"999999" } ]
TCaseNameDefinition.cndUpper:
[ { "MOB_ICADASTRO":11795,"MOB_EMI_REG":6,"CODIGODOCLIENTE":1,"CDOCUMEN1":"999999" } ]
TCaseNameDefinition.cndLowerCamelCase:
[ { "mobIcadastro":11795,"mobEmiReg":6,"codigodocliente":1,"cdocumen1":"999999" } ]
TCaseNameDefinition.cndUpperCamelCase:
[ { "MobIcadastro":11795,"MobEmiReg":6,"Codigodocliente":1,"Cdocumen1":"999999" } ] TDataSetSerializeConfig.GetInstance. Export .FormatDate := ' YYYY-MM-DD ' ; TDataSetSerializeConfig.GetInstance. Export .FormatCurrency := ' 0.00## ' ; TDataSetSerializeConfig.GetInstance. Export .FormatFloat := ' ,0.00 ' ; TDataSetSerializeConfig.GetInstance.DataSetPrefix := [ ' mt ' , ' qry ' ];Consultez notre exemple de projet pour chaque situation présentée ci-dessus en fonctionnement. Si vous avez des questions ou des suggestions, veuillez contacter, effectuer votre demande de traction ou créer un problème.

DataSet-Serialize est gratuite et un logiciel open source sous licence MIT.
Seul nous allons plus vite. Ensemble, nous allons plus loin.