TDBXJsonTools copiar/converter dados entre TDataSet – TJSONObject – DBXReader

Texto do Andreano Lanusse.

Você pode copiar os dados de um DBXReader para um ClientDataSet e vice-versa utilizando o dbxExpress framework, provavelmente você já leu alguns dos meus  artigos aqui (lá) no blog (www.andreanolanusse.com) onde explico como isso funciona em aplicações desktop, entretanto em plataformas móveis não temos o ClientDataSet e quando buscamos algo similar vem a pergunta, o que fazer?

DataSnap Mobile Connectors tem um classe chamada TDBXJsonTools que permite a copia e conversão de dados entre DBXReader, TJSONObject, DBXReader e outros tipos de dados, pode ser utilizada em qualquer plataforma suportada pelos conectores, como: Java/Android, Java/BlackBerry, Objective-C, C#/Windows Phone e FreePascal.

Em aplicações desktop nativa utilizamos o TDBXDataSetReader.CopyReaderToClientDataSet(Reader, ClientDataSet) para copiar os dados do DBXReader para um ClientDataSet, no caso de aplicações móveis usamos TDBXJsonTools.CreateTDataSetFromJSON(DBXReader.asJSONObject).

Entretanto não estamos limitados a copia/conversão de dados, TDBXJsonTools traz maior flexibilidade na interação e transporte dos dados usando diferentes tipos de dados, além de usar o melhor dos tipos nativos em cada plataforma. Por exemplo, quando utilizamos DataSet em aplicações FireMonkey para iOS utilizamos a classe TDataSet que é parte da RTL do Delphi e FreePascal, já no caso de aplicações Java, TDataSet será uma extensão do TDBXReader e assim por diante.

DBXReader é unidirecional e com isso a navegação fica limitada, no entanto ao desenvolver aplicações FireMonkey para iOS você poderá copiar os dados do DBXReader para um DataSet que é bidirecional, isso irá permitir a navegação no DataSet e utilizar outros métodos do DataSet.

Abaixo a interface da classe TDBXJsonTools para FreePascal.

 TDBXJsonTools = class
 public
 class procedure jsonToDBX(obj: TJSONValue; var value: TDBXValue; dbxTypeName: String);
 class procedure JSONToValueType(json: TJSONArray; var vt: TDBXValueType);
 class function DBXParametersToJSONObject(dbxParameters: TDSParams) : TJSONObject;
 class function DBXReaderToJSONObject(dbxReader: TDBXReader): TJSONObject;
 class function CreateTDataSetFromJSON(value: TJSONObject): TDataset;
 class function TDataSetToJSONObject(value: TDataset): TJSONObject;
 class function GetTFieldTypeByTDBXDataTypes(DBXDataTypes: TDBXDataTypes) : TFieldType;
 class function GetTDBXDataTypesByTFieldType(FieldType: TFieldType) : TDBXDataTypes;
 class function CreateTStreamFromJSONArray(value: TJSONArray): TStream;
 class function StreamToJSONArray(value: TStream): TJSONArray;
 class function JSONToTableType(value: TJSONValue; dbxTypeName: String): TObject;
 class function SerializeTableType(Objetc: TObject): TJSONObject;

 end;

Eu continuo recomendando o uso do DBXReader como sua fonte principal de dados e quando necessário utilize os métodos da classe TDBXJsonTools.

Fonte: www.andreanolanusse.com/pt/tdbxjsontools-copiarconverter-dados-entre-tdataset-tjsonobject-dbxreader

Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0Print this pageEmail this to someone

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Blog Willian Rodrigues

Receba as atualizações do blog no seu e-mail