
数据集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许可证许可的免费和开源软件。
一个人我们走得更快。我们在一起走得更远。