阅读 107

json主从表

json主从表

//cxg 2021-6-1 主从表json

unit service.tables;

interface

uses
  system.JSON.Serializers, system.JSON,
  system.Generics.Collections, sysutils, Classes;

type
  TMasterTable = record
    billid: Integer;
    operate: string;
  end;

  TDetailTable = record
    productid: Integer;
    productname: string;
  end;

var MasterTables: TArray;
var DetailTables: TArray;

function getJson(const url: string): string;
procedure setJson(const v: string);

implementation

procedure setJson(const v: string);
begin
  var jo: TJSONObject := TJSONObject.ParseJSONValue(v) as TJSONObject;
  var ja: TJSONArray := TJSONArray(jo.GetValue(‘主表‘));
  var s: string := ja.ToString;  //[{"billid":0,"operate":"name0"},{"billid":1,"operate":"name1"}]
  var serial: TJsonSerializer := TJsonSerializer.Create;
  MasterTables := serial.Deserialize>(s);
  s := MasterTables[0].operate;  //name0
  serial.Free;
  jo.Free;
end;

function getJson(const url: string): string;
//主从表 get url: /dal/bills/{accountno}
begin
  try
    try
      SetLength(MasterTables, 2);      //生成主表数据
      var i: Integer;
      for i := 0 to 1 do
      begin
        MasterTables[i].billid := i;
        MasterTables[i].operate := ‘name‘ + i.ToString;
      end;
      SetLength(DetailTables, 2);
      for i := 0 to 1 do           //生成从表数据
      begin
        DetailTables[i].productid := i;
        DetailTables[i].productname := ‘name‘ + i.ToString;
      end;
      var serial: TJsonSerializer := TJsonSerializer.Create;
      var jo: TJSONObject := TJSONObject.Create;
      var ja: TJSONArray := TJSONObject.ParseJSONValue(serial.Serialize>(MasterTables)) as TJSONArray;
      jo.AddPair(‘主表‘, ja);
      ja := TJSONObject.ParseJSONValue(serial.Serialize>(DetailTables)) as TJSONArray;
      jo.AddPair(‘从表‘, ja);
      Result := jo.ToString; //{"主表":[{"billid":0,"operate":"name0"},{"billid":1,"operate":"name1"}],"从表":[{"productid":0,"productname":"name0"},{"productid":1,"productname":"name1"}]}
      jo.free;
      serial.free;
    except
      on E: Exception do
      begin
        result := ‘{"异常":"‘ + e.Message + ‘"}‘;
      end;
    end;
  finally

  end;
end;

end.

  

原文:https://www.cnblogs.com/hnxxcxg/p/14839669.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐