The DataSetConverter4D 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 API you must add the "DataSetConverter4D\src" Path in your Delphi or on your project.
Convert DataSet to JSON
First you must have your DataSet and its Fields created.
uses
DataSetConverter4D,
DataSetConverter4D.Impl;
var
ja: TJSONArray;
jo: TJSONObject;
begin
fCdsCustomers.DataSetField := nil;
fCdsCustomers.CreateDataSet;
fCdsCustomers.Append;
fCdsCustomers.FieldByName('Id').AsInteger := 1;
fCdsCustomers.FieldByName('Name').AsString := 'Customers 1';
fCdsCustomers.FieldByName('Birth').AsDateTime := StrToDateTime('22/01/2014 14:05:03');
fCdsCustomers.Post;
fCdsCustomers.Append;
fCdsCustomers.FieldByName('Id').AsInteger := 2;
fCdsCustomers.FieldByName('Name').AsString := 'Customers 2';
fCdsCustomers.FieldByName('Birth').AsDateTime := StrToDateTime('22/01/2014 14:05:03');
fCdsCustomers.Post;
//Convert all records
ja := TConverter.New.DataSet(fCdsCustomers).AsJSONArray;
//Convert current record
jo := TConverter.New.DataSet.Source(fCdsCustomers).AsJSONObject;
ja.Free;
jo.Free;
end;
Convert JSON to DataSet
First you must have your DataSet and its Fields created.
uses
DataSetConverter4D,
DataSetConverter4D.Impl;
JSON_ARRAY =
[{
"Id": 1,
"Name": "Customers 1",
"Birth": "2014-01-22 14:05:03"
}, {
"Id": 2,
"Name": "Customers 2",
"Birth": "2014-01-22 14:05:03"
}]
JSON_OBJECT =
{
"Id": 2,
"Name": "Customers 2",
"Birth": "2014-01-22 14:05:03"
}
var
ja: TJSONArray;
jo: TJSONObject;
begin
fCdsCustomers.CreateDataSet;
ja := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(JSON_ARRAY), 0) as TJSONArray;
jo := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(JSON_OBJECT), 0) as TJSONObject;
//Convert one record
TConverter.New.JSON(jo).ToDataSet(fCdsCustomers);
fCdsCustomers.EmptyDataSet;
//Convert all records
TConverter.New.JSON.Source(ja).ToDataSet(fCdsCustomers);
ja.Free;
jo.Free;
end;
Convert DataSet to JSON
First you must have your DataSet and its Fields created.
uses
DataSetConverter4D,
DataSetConverter4D.Impl;
var
ja: TJSONArray;
jo: TJSONObject;
begin
fCdsCustomers.DataSetField := nil;
fCdsCustomers.CreateDataSet;
fCdsCustomers.Append;
fCdsCustomers.FieldByName('Id').AsInteger := 1;
fCdsCustomers.FieldByName('Name').AsString := 'Customers 1';
fCdsCustomers.FieldByName('Birth').AsDateTime := StrToDateTime('22/01/2014 14:05:03');
fCdsCustomers.Post;
fCdsCustomers.Append;
fCdsCustomers.FieldByName('Id').AsInteger := 2;
fCdsCustomers.FieldByName('Name').AsString := 'Customers 2';
fCdsCustomers.FieldByName('Birth').AsDateTime := StrToDateTime('22/01/2014 14:05:03');
fCdsCustomers.Post;
//Convert all records
ja := TConverter.New.DataSet(fCdsCustomers).AsJSONArray;
//Convert current record
jo := TConverter.New.DataSet.Source(fCdsCustomers).AsJSONObject;
ja.Free;
jo.Free;
end;
Convert JSON to DataSet
First you must have your DataSet and its Fields created.
uses
DataSetConverter4D,
DataSetConverter4D.Impl;
JSON_ARRAY =
[{
"Id": 1,
"Name": "Customers 1",
"Birth": "2014-01-22 14:05:03"
}, {
"Id": 2,
"Name": "Customers 2",
"Birth": "2014-01-22 14:05:03"
}]
JSON_OBJECT =
{
"Id": 2,
"Name": "Customers 2",
"Birth": "2014-01-22 14:05:03"
}
var
ja: TJSONArray;
jo: TJSONObject;
begin
fCdsCustomers.CreateDataSet;
ja := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(JSON_ARRAY), 0) as TJSONArray;
jo := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(JSON_OBJECT), 0) as TJSONObject;
//Convert one record
TConverter.New.JSON(jo).ToDataSet(fCdsCustomers);
fCdsCustomers.EmptyDataSet;
//Convert all records
TConverter.New.JSON.Source(ja).ToDataSet(fCdsCustomers);
ja.Free;
jo.Free;
end;