Delphi7 JSON的讀取和拼接


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM