zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Python—函数基础篇
    C语言 文件操作(四)
    C语言 文件操作(三)
    C语言 文件操作(二)
    C语言 文件操作(一)
    C语言 生日快乐
    Matlab入门(二)
    Matlab入门(一)
    精华篇:数组指针
    汇编刷题:求一到100内的偶数之和(本程序将和按十六进制输出)
  • 原文地址:https://www.cnblogs.com/cinemaparadiso/p/12073192.html
Copyright © 2011-2022 走看看