Skip to content
 
 

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DataSet JSON Converter For Delphi

The DataSetJSONConverter4D it is an API to convert JSON objects for DataSet's and also doing reverse process, ie, converting DataSet's in JSON.

Works with the TDataSet, and TJSONObject TJSONArray classes.

To use this library you must add the "DataSetJSONConverter4D\src" Path in your Delphi or on your project.

The DataSetJSONConverter4D API was developed and tested in Delphi XE5.

Converting DataSet to JSON

procedure ConvertDataSetToJSONBasic;
const
  cJSONArray = '[{"Id":1,"Name":"Customers 1","Birth":"2014-01-22 14:05:03"},{"Id":2,"Name":"Customers 2","Birth":"2014-01-22 14:05:03"}]';
  cJSONObject = '{"Id":2,"Name":"Customers 2","Birth":"2014-01-22 14:05:03"}';
var
  vJSONArray: TJSONArray;
  vJSONObject: TJSONObject;
begin
  CdsCustomers.Append;
  CdsCustomers.FieldByName('Id').AsInteger := 1;
  CdsCustomers.FieldByName('Name').AsString := 'Customers 1';
  CdsCustomers.FieldByName('Birth').AsDateTime := StrToDateTime('22/01/2014 14:05:03');
  CdsCustomers.Post;

  CdsCustomers.Append;
  CdsCustomers.FieldByName('Id').AsInteger := 2;
  CdsCustomers.FieldByName('Name').AsString := 'Customers 2';
  CdsCustomers.FieldByName('Birth').AsDateTime := StrToDateTime('22/01/2014 14:05:03');
  CdsCustomers.Post;

  //Convert All Records
  TDataSetJSONConverter.UnMarshalToJSON(CdsCustomers, vJSONArray);
  //Convert Current Record
  TDataSetJSONConverter.UnMarshalToJSON(CdsCustomers, vJSONObject);

  FreeAndNil(vJSONArray);
  FreeAndNil(vJSONObject);
end;

procedure ConvertDataSetToJSONComplex;
const
  cJSON = '{"Id":1,"Description":"Sales 1","Date":"2014-01-22","Time":"14:03:03",' +
'"Customers":{"Id":2,"Name":"Customers 2","Birth":"2014-01-22 14:05:03"},' +
'"Products":[{"Id":1,"Description":"Product 1","Value":100},{"Id":2,"Description":"Product 2","Value":200}]}';
var
  vJSONObject: TJSONObject;
begin
  CdsSales.Append;
  CdsSales.FieldByName('Id').AsInteger := 1;
  CdsSales.FieldByName('Description').AsString := 'Sales 1';
  CdsSales.FieldByName('Date').AsDateTime := StrToDate('22/01/2014');
  CdsSales.FieldByName('Time').AsDateTime := StrToTime('14:03:03');

  CdsCustomers.Append;
  CdsCustomers.FieldByName('Id').AsInteger := 2;
  CdsCustomers.FieldByName('Name').AsString := 'Customers 2';
  CdsCustomers.FieldByName('Birth').AsDateTime := StrToDateTime('22/01/2014 14:05:03');
  CdsCustomers.Post;

  CdsProducts.Append;
  CdsProducts.FieldByName('Id').AsInteger := 1;
  CdsProducts.FieldByName('Description').AsString := 'Product 1';
  CdsProducts.FieldByName('Value').AsFloat := 100;
  CdsProducts.Post;

  CdsProducts.Append;
  CdsProducts.FieldByName('Id').AsInteger := 2;
  CdsProducts.FieldByName('Description').AsString := 'Product 2';
  CdsProducts.FieldByName('Value').AsFloat := 200;
  CdsProducts.Post;

  CdsSales.Post;

  TDataSetJSONConverter.UnMarshalToJSON(FCdsSales, vJSONObject);

  FreeAndNil(vJSONObject);
end;

Converting JSON to DataSet

procedure ConvertJSONToDataSetBasic;
const
  cJSONArray = '[{"Id":1,"Name":"Customers 1","Birth":"2014-01-22 14:05:03"},{"Id":2,"Name":"Customers 2","Birth":"2014-01-22 14:05:03"}]';
  cJSONObject = '{"Id":2,"Name":"Customers 2","Birth":"2014-01-22 14:05:03"}';
var
  vJSONArray: TJSONArray;
  vJSONObject: TJSONObject;
begin
  vJSONArray := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(cJSONArray), 0) as TJSONArray;
  vJSONObject := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(cJSONObject), 0) as TJSONObject;

  //Convert one record
  TJSONDataSetConverter.UnMarshalToDataSet(vJSONObject, CdsCustomers);
  //Convert several records
  TJSONDataSetConverter.UnMarshalToDataSet(vJSONArray, CdsCustomers);

  FreeAndNil(vJSONArray);
  FreeAndNil(vJSONObject);
end;

procedure ConvertJSONToDataSetComplex;
const
  cJSON = '{"Id":1,"Description":"Sales 1","Date":"2014-01-22","Time":"14:03:03",' +
'"Customers":{"Id":2,"Name":"Customers 2","Birth":"2014-01-22 14:05:03"},' +
'"Products":[{"Id":1,"Description":"Product 1","Value":100},{"Id":2,"Description":"Product 2","Value":200}]}';
var
  vJSONObject: TJSONObject;
begin
  vJSONObject := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(cJSON), 0) as TJSONObject;

  TJSONDataSetConverter.UnMarshalToDataSet(vJSONObject, CdsSales);

  FreeAndNil(vJSONObject);
end;

Using DataSetJSONConverter4D

Using this library will is very simple, you simply add the Search Path of your IDE or your project the following directories:

  • DataSetJSONConverter4Delphi\src\

Analyze the unit tests they will assist you.

About

API to convert JSON objects for DataSet and DataSet to JSON Objects

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors