
DataSet Serialize ist eine Reihe von Funktionen, um die Arbeit mit JSON und Dataset einfach zu gestalten. Es verfügt über Funktionen wie das Exportieren oder Importieren von Datensätzen in einen Datensatz. Überprüfen Sie, ob JSON alle erforderlichen Attribute (zuvor im Datensatz eingegeben) enthält und die Struktur der Datensatzfelder im JSON -Format exportiert oder importiert. Zusätzlich zur Verwaltung von verschachtelten JSONs durch Master -Detail oder Verwendung von TDatasetfield (Sie wählen die Art und Weise, wie Sie am besten zu Ihnen passt). All dies mit Klassenhelfern, was es noch einfacher und einfacher zu verwenden macht.
[Optional] Zur Erleichterung empfehle ich die Verwendung des Chefs (Abhängigkeitsmanager für Delphi) zur Installation, indem ich einfach den folgenden Befehl in einem Terminal ausführte (z. B. Windows PowerShell): boss install github.com/viniciussanchez/dataset-serialize
Wenn Sie manuell installieren möchten, fügen Sie einfach die folgenden Ordner zu Ihrem Projekt hinzu, in Projekt> Optionen> Erstellen> Delphi Compiler> Suchpfad
../dataset-serialize/src
Alle von Dataset Serialize angebotenen Funktionen befinden sich im Klassenhelfer im Einheitsdatensatz.Serialize. Um Ihr Projekt zu starten, fügen Sie einfach Ihre Referenz hinzu, wo Ihre Funktionalität erforderlich ist. Hier ist ein Beispiel:
uses DataSet.Serialize;Schauen wir uns nun jede Funktion, seine Regeln und Besonderheiten an, um allen Benutzern das Beste zu liefern.
Das Erstellen eines JSON -Objekts mit Informationen aus einem Datensatzdatensatz scheint eine sehr einfache Aufgabe zu sein. Aber diese Aufgabe wurde einfach einfacher. Dataset Serialize hat dafür zwei Funktionen, nämlich tojsonObject und tojsonArray. Schauen wir uns die Verwendung der Funktionen an:
var
LJSONArray: TJSONArray;
LJSONObject: TJSONObject;
begin
LJSONObject := qrySamples.ToJSONObject(); // export a single record
LJSONArray := qrySamples.ToJSONArray(); // export all records
end ;Was ist der Unterschied zwischen den beiden Funktionen? TojsonObject konvertiert den aktuellen Datensatzdatensatz nur in ein tjsonObject. TojsonArray wird alle Datensätze des Datensatzes und nicht nur in den ausgewählten Datensatz in ein TjsonArray konvertieren.
Parameter
AChildRecords - Gibt an, ob Kindersätze (über Master Detail oder Tdatasetfield) exportieren sollen oder nicht.AOnlyUpdatedRecords - Gibt an, ob nur Datensätze exportieren sollen (Datensätze hinzugefügt, geändert oder gelöscht). Diese Funktion ist nur bei Verwendung von Firedac verfügbar. Die Besitz von Cachedupdates muss wahr sein;TojsonObject
{} ) zurückgegeben.TojsonArray
[] ) zurückgegeben.Eine nicht sehr nützliche, aber wichtige Merkmale ist die Savestruktur und Laststruktur. Wie der Name bereits sagte, ist es möglich, die gesamte Struktur der im Datensatz konfigurierten Felder zu speichern und eine Struktur im JSON -Format zu laden. Hier ist ein Beispiel dafür, wie Datensatzfelder geladen und exportieren:
var
LJSONArray: TJSONArray;
begin
LJSONArray := qrySamples.SaveStructure;
qrySamples.LoadStructure(LJSONArray, True);
end ;Die folgenden Eigenschaften werden kontrolliert:
Alignment, FieldName, DisplayLabel, DataType, Size, Key, Origin, Required, Visible, ReadOnly, and AutoGenerateValue ;
Parameter
AOwns - Zeigt an, wer für die Zerstörung des bestandenen JSON als Parameter verantwortlich ist.Savestruktur
[] ) zurückgegeben.Laststruktur
Die Validatejson -Funktion ist sehr nützlich, wenn wir auf einem Server validieren möchten, beispielsweise wenn der in der Anfrage erhaltene JSON alle erforderlichen Informationen enthält. Praktisch werden alle Felder im Datensatz durchquert und prüfen, ob die erforderlichen Felder in JSON eingegeben wurden. Wenn das Feld erforderlich ist und nicht in JSON eingegeben wurde, wird es dem von der Funktion zurückgegebenen JSON -Array hinzugefügt. Siehe das Beispiel unten:
begin
LJSONArray := qrySamples.ValidateJSON( ' {"country":"Brazil"} ' );
end ; Nach Empfang von {"country": "Brazil"} unter der Annahme, dass unser Datensatz 3 Felder (ID, First_Name, Land) hat, und das Feld ID und First_Name sind erforderlich, wird Folgendes zurückgegeben:
[{"field":"id","error":"Id not informed"},{"field":"firstName","error":"Name not informed"}]
Parameter
ALang - Verantwortlich für die Änderung der in der Versammlung von Nachrichten verwendeten Sprache (Standard ist Englisch);AOwns - Zeigt an, wer für die Zerstörung des bestandenen JSON als Parameter verantwortlich ist;Validatejson
[] ) zurückgegeben;Mit Dataset Serializa können Sie einen Datensatz mit einem JsonObject, JsonArray und sogar einem verschachtelten JSON laden, die alle in einer Methode zusammengefasst sind: loadfromjson (). Hier ist ein Beispiel dafür, wie man es benutzt:
begin
qrySamples.LoadFromJSON( ' {"firstName":"Vinicius Sanchez","country":"Brazil"} ' );
end ;Parameter
AOwns - Zeigt an, wer für die Zerstörung des bestandenen JSON als Parameter verantwortlich ist;Lastfromjson
Mit DataSet -Serialize können Sie die Datensatzregistrierung weiterhin mithilfe von MergeFromjsonObject ändern. Die Funktion ähnelt Lastfromjson. Ein Beispiel für die Verwendung von REST -Servern ist, wenn das in der Anfrage verwendete Verb (nicht unbedingt) eingestellt wird. In diesem Fall möchten wir keinen neuen Datensatz eingeben, sondern den aktuellen Datensatz ändern.
begin
qrySamples.MergeFromJSONObject( ' {"firstName":"Vinicius","country":"United States"} ' );
end ;Parameter
AOwns - Zeigt an, wer für die Zerstörung des bestandenen JSON als Parameter verantwortlich ist;MergeFromjsonObject
Sie können einige Funktionen von Dataset-serialize anpassen:
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 ' ];Schauen Sie sich unser Beispielprojekt für jede oben vorgestellte Situation an. Wenn Sie Fragen oder Vorschläge haben, wenden Sie sich bitte an, stellen Sie Ihre Pull -Anfrage oder erstellen Sie ein Problem.

DataSet-Serialize ist kostenlos und Open-Source-Software, die unter der MIT-Lizenz lizenziert ist.
Allein gehen wir schneller. Zusammen gehen wir weiter.