Json是一种轻量级数据传输格式,广泛应用互联网和各应用中,json主要采用键值对来表示数据项,多个数据项之间用逗号分隔,也可以用于数组。下面注重介绍一下在delphi中使用json,在delphi中使用json常用superobject单元文件,该文件可以在网上下载,最初接触json是在2011年,好久没用这不刚好有项目要用到又折腾了好久,下面做了一个简单的Demo,方便以后忘了能随时查看,具体的json使用可以参看万一老师的博客,记录的很详细,下面的demo主要是将数据库记录转换为json格式,然后进行解析。具体源码如下。
新建一个delphi应用程序,在窗体上放置table组件,连接数据DBDEMOS,连接表customer.db,active设置为true。具体文件如下:
delphi工程文件如下
program Project1;
uses Forms, Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
单元文件如下:
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables;
type TForm1 = class(TForm) mmo1: TMemo; tbl1: TTable; ds1: TDataSource; btn1: TButton; btn2: TButton; btn3: TButton; procedure btn1Click(Sender: TObject); procedure btn2Click(Sender: TObject); procedure btn3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
uses superobject;
procedure TForm1.btn1Click(Sender: TObject); var jo,jt:ISuperObject; begin jo:=SO(); jt:=SO(); jo.S['xm']:='张三'; jo.I['age']:=25; jo.S['sex']:='男'; jt.O['person']:=jo; ShowMessage(jt.AsString); ShowMessage(jt.O['person'].S['xm']); end;
procedure TForm1.btn2Click(Sender: TObject); var i:Integer; jfields,jitems,jo:ISuperObject; begin mmo1.Clear; jitems:=SA([]); jo:=SO(); with tbl1 do begin First; while not eof do begin
jfields:=SO(); for i:=0 to FieldCount-1 do begin if Fields[i].DataType=ftDateTime then jfields.S[Fields[i].FieldName]:=FormatDateTime('yyyy-mm-dd hh:mm:ss',Fields[i].AsDateTime) else jfields.S[Fields[i].FieldName]:=Fields[i].AsString; end; jitems.AsArray.Add(jfields); Next; end; end; jo.O['records']:=jitems; mmo1.Lines.Add(jo.AsString); end;
procedure TForm1.btn3Click(Sender: TObject); var jo,m:ISuperobject; i,j:Integer; tt:TSuperArray; s:string; lst:TStringList; begin if mmo1.Text<>'' then begin lst:=TStringList.Create; jo:=so(mmo1.Text); tt:=jo.O['records'].AsArray; for i:=0 to tt.Length-1 do begin s:=''; for j:=0 to tbl1.FieldCount-1 do begin if s='' then s:=tt.O[i].S[tbl1.Fields[j].FieldName] else s:=s+' '+tt.O[i].S[tbl1.Fields[j].FieldName] end; lst.Add(s); end; ShowMessage(lst.Text) ; lst.Free; end; end;
end. ———————————————— 版权声明:本文为CSDN博主「zhenghui1」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/zhenghui1/article/details/27404617
|
请发表评论