fpjsondataset
From Lazarus wiki
Jump to navigationJump to search
│ English (en) │ polski (pl) │
References:
Tutorials/practical articles:
Databases |
fpjsondataset is an fcl-db unit containing a dataset class for accessing JSON data as simple table structures.
TJSONDataSet
TJSONDataSet is a dataset class for using JSON arrays for data handling.
Note: TJSONDataSet is included in Free Pascal but not visible in Lazarus' component palette.
Example
- Create a new application project
- Place a DB Grid on the form (DBGrid1)
- Place a DataSource on the form (DataSource1)
- Connect DBGrid1.Datasource with DataSource1
- Create a JSON dataset via code
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBCtrls, DBGrids, DB,
fpjson, fpjsondataset;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
private
JSONDataSet: TJSONDataSet;
end;
var
Form1: TForm1;
const
// this is the sample JSON data used in the demo
JSON_STRING = '['
+'{"Author ID":"409-56-7008","Last Name":"Bennet","First Name":"Abraham","Active": False},'
+'{"Author ID":"213-46-8915","Last Name":"Green","First Name":"Marjorie","Active": True}'
+']';
implementation
{$R *.lfm}
procedure TForm1.FormCreate(Sender: TObject);
var
data: TJSONArray;
begin
// parse the JSON string
data := GetJSON(JSON_STRING) as TJSONArray;
// create a new TJSONDataSet
JSONDataSet := TJSONDataSet.Create(Self);
// you'll need to create the FieldDefs manually
// ftString requires a length specified
JSONDataSet.FieldDefs.Add('Author ID', ftString, 11, True);
JSONDataSet.FieldDefs.Add('Last Name', ftString, 40);
JSONDataSet.FieldDefs.Add('First Name', ftString, 20);
JSONDataSet.FieldDefs.Add('Active', ftBoolean);
// set OwnsData to True, and the JSON data will be destroyed when the dataset is destroyed
JSONDataSet.OwnsData := True;
// the JSON data is an array of objects
JSONDataSet.RowType := rtJSONObject;
// assign the JSON data to the dataset
JSONDataSet.Rows := data;
// activate the dataset
JSONDataSet.Active := True;
// assign the dataset to the datasource
DataSource1.DataSet := JSONDataSet;
end;
end.