
數據集Serialize是一組功能,可以使JSON和DATASET變得簡單。它具有將記錄導出或導入到數據集中的功能,驗證JSON是否具有所需的所有屬性(以前在數據集中輸入),以JSON格式導出或導入數據集字段的結構。除了通過主細節管理嵌套JSON或使用TDATASETFIELD(您選擇最適合自己的方式)。所有這些都使用類助手,這使其更加簡單,更易於使用。
[Optional]為了放鬆,我建議使用Boss (Delphi的依賴管理器)進行安裝,只需在終端上運行以下命令(例如Windows PowerShell): boss install github.com/viniciussanchez/dataset-serialize
如果選擇手動安裝,只需在項目>“選項> building> delphi編譯器>搜索路徑”中添加以下文件夾
../dataset-serialize/src
數據集序列化提供的所有功能均位於單元數據集的類幫助器中。要開始項目,只需在需要功能的位置添加您的參考。這是一個例子:
uses DataSet.Serialize;現在,讓我們看一下每個功能,其規則和特殊性,以向所有用戶提供最好的功能。
使用數據集記錄中的信息創建JSON對像似乎是一個非常簡單的任務。但是該任務變得更加容易。數據集序列化具有兩個功能,即tojsonObject和tojsonArray。讓我們看一下功能的使用:
var
LJSONArray: TJSONArray;
LJSONObject: TJSONObject;
begin
LJSONObject := qrySamples.ToJSONObject(); // export a single record
LJSONArray := qrySamples.ToJSONArray(); // export all records
end ;這兩個功能有什麼區別? TojSonObject僅將當前數據集記錄轉換為tjsonobject。 TojsonArray將轉換為數據集的所有記錄,而不僅僅是所選記錄。
參數
AChildRecords指示是否導出子記錄(通過主細節或TDATASETFIELD)。AOnlyUpdatedRecords指示是否僅導出已修改的記錄(添加,更改或刪除的記錄)。此功能僅在使用FireDac時可用。 cachedupdates屬性必須為真;tojsonObject
{} );Tojsonarray
[] );一個不是很有用的,但重要功能是Savestructure和Loadsstructure。顧名思義,可以保存數據集中配置的字段的整個結構,並以JSON格式加載結構。這是如何加載和導出數據集字段的一個示例:
var
LJSONArray: TJSONArray;
begin
LJSONArray := qrySamples.SaveStructure;
qrySamples.LoadStructure(LJSONArray, True);
end ;控制以下屬性:
Alignment, FieldName, DisplayLabel, DataType, Size, Key, Origin, Required, Visible, ReadOnly, and AutoGenerateValue
參數
AOwns指示誰負責銷毀通過的JSON作為參數。savestructure
[] );負載結構
當我們要在服務器上驗證我們在請求中收到的JSON是否具有所有必需的信息時,valatejson函數非常有用。實際上,數據集中的所有字段均已遍歷,檢查是否在JSON中輸入了所需的字段。如果需要該字段並且尚未在JSON中輸入,則將其添加到該函數返回的JSON數組中。請參閱下面的示例:
begin
LJSONArray := qrySamples.ValidateJSON( ' {"country":"Brazil"} ' );
end ;在接收{"country": "Brazil"}後,假設我們的數據集有3個字段(ID,first_name,country),並且需要ID和first_name字段,則將返回以下內容:
[{"field":"id","error":"Id not informed"},{"field":"firstName","error":"Name not informed"}]
參數
ALang負責更改郵件組裝中使用的語言(默認為英語);AOwns指示誰負責銷毀通過的JSON作為參數;validatejson
[] );數據集Serializa允許您使用JSONOBJECT,JSONARRAY甚至嵌套的JSON加載數據集,均以一種方法彙總:loadfromjson()。這是如何使用它的示例:
begin
qrySamples.LoadFromJSON( ' {"firstName":"Vinicius Sanchez","country":"Brazil"} ' );
end ;參數
AOwns指示誰負責銷毀通過的JSON作為參數;loadfromjson
使用數據集序列化,您仍然可以通過使用MergeFromjSonObject更改數據集註冊。該功能類似於LoadFromjson。使用的一個示例是用於REST服務器時,當提出請求中使用的動詞時(不一定是),在這種情況下,我們不想包括新記錄,而是要更改當前記錄。
begin
qrySamples.MergeFromJSONObject( ' {"firstName":"Vinicius","country":"United States"} ' );
end ;參數
AOwns指示誰負責銷毀通過的JSON作為參數;MergeFromjSonObject
您可以自定義數據集序列化的某些功能:
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 ' ];查看我們的示例項目,以了解上述運行中的每種情況。如果您有任何疑問或建議,請聯繫,提出拉請請求或創建問題。

DataSet-Serialize是根據MIT許可證許可的免費和開源軟件。
一個人我們走得更快。我們在一起走得更遠。