freepascal TJsonDataset
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.
procedure TForm1.Button1Click(Sender: TObject);
begin
JSONDataSet1.FieldDefs.Add('id', ftstring, 9);
JSONDataSet1.FieldDefs.Add('name', ftstring, 9);
JSONDataSet1.Open;
JSONDataSet1.Append;
JSONDataSet1['id'] := '1';
JSONDataSet1['name']:='中';
JSONDataSet1.Post;
memo1.Text:= JSONDataSet1.Rows.Clone.AsJSON; //[{ "id" : "1", "name" : "中" }]
end;
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/18148565

浙公网安备 33010602011771号