Skip to content

Files

Latest commit

bfc21a2 · Mar 17, 2021

History

History
55 lines (40 loc) · 2 KB

README.md

File metadata and controls

55 lines (40 loc) · 2 KB

TJSONDatasetAdapter

Encode JSON to a FireDAC Memory Table without REST Request

Credits to:
https://chapmanworld.com/2017/07/07/encode-json-to-a-firedac-memory-table-without-rest-request/
https://github.com/chapmanworld

So how do I use it?

Having installed the component, it should appear on your component palette under the “REST Client” category.
Here are some instructions for building a sample application for it:

Create a new application (VCL or FMX).
(note, you may need to set your project path to include the location of jsonadapter.pas if you did not configure this during installation).
Drop a TFDMemTable onto your form.
Drop a TJSONDatasetAdapter adapter onto your form
Drop a TStringGrid onto your form.
Set the JSONDatasetAdapter1.Dataset property to FDMemTable1
Set the JSONDatasetAdapter1.JSON property to some JSON data (see example data below).
Use live bindings to bind your FDMemTable1 component to the string grid.




Repo created after fix somes issues in the original code:
That was:
line 79:
Original: e: TJSONPairEnumerator;
Changed to: e: TJsonObject.TEnumerator;

JSON Null types rise error:
Line 134
Original: end else if v is TJSONNull then begin
//- Do nothing, another record may indicate data type.

Changed: end else if v is TJSONNull then begin
//- Do nothing, another record may indicate data type.
if (FieldDef.DataType=TFieldType.ftUnknown) then begin
FieldDef.DataType := TFieldType.ftString;
end;

And that it, works perfect.

A more robust solution can be found in:

https://github.com/danieleteti/delphimvcframework/blob/master/sources/MVCFramework.DataSet.Utils.pas

as part of te DMVCFramework by Daniele Teti:
https://github.com/danieleteti/delphimvcframework