mormot json序列(还原)
mormot json序列(还原)
/// <author>cxg 2021-5-28</author>
/// delphi7 + mormot1.18
/// json序列\还原
(* people.json
[
{"RowID":3,"FirstName":"咏南","LastName":"Rachmaninoff","Data":"?w6l6w6di","YearOfBirth":1800,"YearOfDeath":1943},
{"RowID":4,"FirstName":"中间件","LastName":"Dumas","Data":"?w6nDp2I=","YearOfBirth":1801,"YearOfDeath":1870},
{"RowID":7,"FirstName":"rest","LastName":"Huxley","Data":"?w6nDoA==","YearOfBirth":1802,"YearOfDeath":1963},
]
*)
unit Unit1;
interface
uses
mORMot, SynCommons, Contnrs,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
fFileName: string;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
TSQLRecordPeople = class(TSQLRecord)
private
fData: TSQLRawBlob;
fFirstName: RawUTF8;
fLastName: RawUTF8;
fYearOfBirth: integer;
fYearOfDeath: word;
published
property FirstName: RawUTF8 read fFirstName write fFirstName;
property LastName: RawUTF8 read fLastName write fLastName;
property Data: TSQLRawBlob read fData write fData;
property YearOfBirth: integer read fYearOfBirth write fYearOfBirth;
property YearOfDeath: word read fYearOfDeath write fYearOfDeath;
end;
procedure TForm1.Button1Click(Sender: TObject);
//从json还原对象1
var json: RawUTF8;
i: integer;
list: TSQLTableJSON;
doc: TObjectList;
p: TSQLRecordPeople;
begin
json := StringFromFile(fFileName);
list := TSQLTableJSON.Create('',pointer(json),length(json));
doc := list.ToObjectList(TSQLRecordPeople);
list.Free;
json := '';
for i := 0 to doc.Count-1 do
begin
p := TSQLRecordPeople(doc.List[i]);
Memo1.Lines.Add(Utf8ToAnsi(p.fFirstName));
end;
doc.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fFileName := 'people.json';
Memo1.Clear;
end;
procedure TForm1.Button2Click(Sender: TObject);
//从json还原对象2
var p: TSQLRecordPeople;
json: RawUTF8;
begin
json := StringFromFile(fFileName);
p := TSQLRecordPeople.CreateAndFillPrepare(json);
json := '';
while p.FillOne do
begin
Memo1.Lines.Add(Utf8ToAnsi(p.FirstName));
end;
p.Free;
end;
end.
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/14821755.html

浙公网安备 33010602011771号