fpjsondataset
From Lazarus wiki
Jump to navigationJump to searchThe printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
│ 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.