fpjsondataset

From Lazarus wiki
Jump to navigationJump to search
The 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)

Databases portal

References:

Tutorials/practical articles:

Databases

Advantage - MySQL - MSSQL - Postgres - Interbase - Firebird - Oracle - ODBC - Paradox - SQLite - dBASE - MS Access - Zeos

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.

Light bulb  Note: TJSONDataSet is included in Free Pascal but not visible in Lazarus' component palette.


Example

  1. Create a new application project
  2. Place a DB Grid on the form (DBGrid1)
  3. Place a DataSource on the form (DataSource1)
  4. Connect DBGrid1.Datasource with DataSource1
  5. 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.