
O conjunto de dados serializa é um conjunto de recursos para tornar o trabalho com JSON e o conjunto de dados simples. Possui recursos como exportar ou importar registros para um conjunto de dados, validar se o JSON tiver todos os atributos necessários (anteriormente inseridos no conjunto de dados), exportando ou importando a estrutura dos campos de conjunto de dados no formato JSON. Além de gerenciar o JSON aninhado por meio de detalhes mestres ou usar o TDatasetfield (você escolhe a maneira como melhor lhe convém). Tudo isso usando ajudantes de classe, o que o torna ainda mais simples e fácil de usar.
[Optional] Para facilitar, recomendo o uso do chefe (Gerenciador de dependência da Delphi) para instalação, simplesmente executando o comando abaixo em um terminal (Windows PowerShell, por exemplo): boss install github.com/viniciussanchez/dataset-serialize
Se você optar por instalar manualmente, basta adicionar as seguintes pastas ao seu projeto, em Projeto> Opções> Construindo> Delphi Compiler> Caminho de pesquisa
../dataset-serialize/src
Todos os recursos oferecidos pela DataSet Serialize estão localizados no auxiliar de classe no conjunto de dados da unidade.Serialize. Para iniciar seu projeto, basta adicionar sua referência onde sua funcionalidade é necessária. Aqui está um exemplo:
uses DataSet.Serialize;Agora vamos olhar para cada recurso, suas regras e peculiaridades, para oferecer o melhor para todos os usuários.
Criar um objeto JSON com informações de um registro do conjunto de dados parece uma tarefa muito simples. Mas essa tarefa ficou mais fácil. O conjunto de dados serializa tem duas funções para isso, a saber, TojsonObject e TojsonArray. Vejamos o uso das funções:
var
LJSONArray: TJSONArray;
LJSONObject: TJSONObject;
begin
LJSONObject := qrySamples.ToJSONObject(); // export a single record
LJSONArray := qrySamples.ToJSONArray(); // export all records
end ;Qual é a diferença entre as duas funções? O TojsonObject apenas converterá o registro do conjunto de dados atual em um TJsonObject. TojsonArray será convertido em um TJSONArray todos os registros do conjunto de dados e não apenas o registro selecionado.
Parâmetros
AChildRecords - indica se deve ou não exportar registros infantis (por meio de detalhes mestre ou TDatasetfield).AOnlyUpdatedRecords - indica se deve exportar apenas registros que foram modificados (registros adicionados, alterados ou excluídos). Esse recurso está disponível apenas ao usar o FIREDAC. A propriedade CacheDupdates deve ser verdadeira;TojsonObject
{} ) será retornado;TojsonArray
[] ) será retornada;Um recurso não muito útil, mas importante, é o SAVESTRUCTURTURA e a estrutura de carga. Como o nome já disse, é possível salvar toda a estrutura dos campos configurados no conjunto de dados e também carregar uma estrutura no formato JSON. Aqui está um exemplo de como carregar e exportar campos de conjunto de dados:
var
LJSONArray: TJSONArray;
begin
LJSONArray := qrySamples.SaveStructure;
qrySamples.LoadStructure(LJSONArray, True);
end ;As seguintes propriedades são controladas:
Alignment, FieldName, DisplayLabel, DataType, Size, Key, Origin, Required, Visible, ReadOnly, and AutoGenerateValue ;
Parâmetros
AOwns - indica quem é responsável por destruir o JSON aprovado como um parâmetro.SAVESTUTURE
[] ) será retornada;Estrutura de carga
A função validatejson é muito útil quando queremos validar em um servidor, por exemplo, se o JSON que recebemos na solicitação tiver todas as informações necessárias. Praticamente, todos os campos do conjunto de dados são atravessados, verificando se os campos necessários foram inseridos no JSON. Se o campo for necessário e não tiver sido inserido no JSON, ele será adicionado à matriz JSON devolvida pela função. Veja o exemplo abaixo:
begin
LJSONArray := qrySamples.ValidateJSON( ' {"country":"Brazil"} ' );
end ; Ao receber {"country": "Brazil"} , assumindo que nosso conjunto de dados possui 3 campos (ID, First_Name, Country), e o campo ID e First_Name são necessários, o seguinte será devolvido:
[{"field":"id","error":"Id not informed"},{"field":"firstName","error":"Name not informed"}]
Parâmetros
ALang - Responsável por alterar o idioma usado na montagem de mensagens (o padrão é inglês);AOwns - indica quem é responsável por destruir o JSON aprovado como um parâmetro;Validatejson
[] ) é retornada;O DataSet Serializa permite carregar um conjunto de dados com um JsonObject, JsonArray e até um JSON aninhado, todos resumidos em um método: loadfromjson (). Aqui está um exemplo de como usá -lo:
begin
qrySamples.LoadFromJSON( ' {"firstName":"Vinicius Sanchez","country":"Brazil"} ' );
end ;Parâmetros
AOwns - indica quem é responsável por destruir o JSON aprovado como um parâmetro;LoadFromjson
Com o conjunto de dados serializando, você ainda pode alterar o registro do conjunto de dados simplesmente usando o MergeFromjsonObject. A função é semelhante ao loadfromjson. Um exemplo de uso é para servidores REST quando o verbo usado na solicitação é colocado (não necessariamente), neste caso, não queremos incluir um novo registro, mas alterar o registro atual.
begin
qrySamples.MergeFromJSONObject( ' {"firstName":"Vinicius","country":"United States"} ' );
end ;Parâmetros
AOwns - indica quem é responsável por destruir o JSON aprovado como um parâmetro;MergeFromjsonObject
Você pode personalizar alguns recursos do DataSet-Serialize:
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 ' ];Confira nosso projeto de amostra para cada situação apresentada acima em operação. Se você tiver alguma dúvida ou sugestão, entre em contato, faça sua solicitação de tração ou crie um problema.

DataSet-Serialize é um software gratuito e de código aberto licenciado sob a licença do MIT.
Sozinho nós vamos mais rápido. Juntos, vamos mais longe.