fpjsondataset/pl
From Free Pascal wiki
Jump to navigationJump to search
│ English (en) │ polski (pl) │
References:
Tutorials/practical articles:
Databases |
fpjsondataset jest to moduł fcl-db zawierający klasę zbioru danych (dataset) umożliwiającą uzyskanie dostępu do danych JSON w postaci prostych struktur tabel.
TJSONDataSet
TJSONDataSet jest to klasa zbioru danych (dataset) używana do obsługi danych w postaci tablic JSON.
Uwaga: TJSONDataSet jest zawarty we Free Pascalu, ale nie jest widoczny w palecie komponentów Lazarusa.
Przykład
- Utwórz nowy projekt aplikacji
- Umieść siatkę DB na formularzu (DBGrid1)
- Umieść DataSource w formularzu (DataSource1)
- Połącz DBGrid1.Datasource z DataSource1
- Utwórz zbiór danych JSON za pomocą kodu
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
// to są przykładowe dane JSON użyte w 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
// przeanalizuj ciąg JSON
data := GetJSON(JSON_STRING) as TJSONArray;
// utwórz nowy zestaw TJSONDataSet
JSONDataSet := TJSONDataSet.Create(Self);
// musisz ręcznie utworzyć FieldDefs
// ftString wymaga określonej długości
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);
// ustaw OwnsData na True, a dane JSON zostaną zniszczone, gdy zestaw danych zostanie zniszczony
JSONDataSet.OwnsData := True;
// dane JSON to tablica obiektów
JSONDataSet.RowType := rtJSONObject;
// przypisz dane JSON do zbioru danych
JSONDataSet.Rows := data;
// aktywuj zbiór danych
JSONDataSet.Active := True;
// przypisz zbiór danych do źródła danych
DataSource1.DataSet := JSONDataSet;
end;
end.