Sign in Join
Wiki copytemporary

fpjsondataset

English · Polski

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

  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
pascal
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.

From the Free Pascal wiki, page "fpjsondataset", as it stood on 2021-04-01 after a change by Socke, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.