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