Delphi Json 转换成 TFDMemTable


本文整理自网络,侵删。

 
工作的时候(虽然我不喜欢弄这些玩意儿) 需要将返回过来的json数据 转到本地的DBGrid展示。

所以便搜罗了一下 ,使用 XSuperJSON 将数据转成内存表 使用 .

我们从请求返回的JSON数组对象 ISuperArray 转换到FDM中 然后连接到DataSet显示即可 

下面给出的函数即鄙人粗糙的写的转换函数.

(*
 json 数据转换 内存表  
 icy
*)
function JsonToDataSet2(JAry: ISuperArray; MDB:  TFDMemTable):Boolean;
begin
  Result:= True;
  try
    JSONToDataSet(jAry,MDB);
    MDB.Post;
  except
    Result:= False;
  end;
end;
以上这个在内存表添加了字段后即可展示

下面给出自动生成字段的

(*
    内存表自动转换
    只认 整形和 字符串 浮点和日期的json一律以字符串展示
    icy
*)
function JsonToFDMDataSet(JAry: ISuperArray; MDB:  TFDMemTable):Boolean;
var
  JO:    ISuperObject;
  K:     string;
begin
  Result:= JAry.Length > 0;
  if Result then
  begin
    JO:= JAry.O[0];
    MDB.Close;
    if MDB.FieldDefs.Count > 0 then
      MDB.FieldDefs.Clear;
    while not JO.EoF do
    begin
      K:= JO.CurrentKey;
 
      if JO.CurrentValue.DataType = dtInteger then
         MDB.FieldDefs.Add(K, ftInteger, 0, False)
      else
      if JO.CurrentValue.DataType = dtFloat then
      MDB.FieldDefs.Add(K,ftFloat,0,False)
      else
      MDB.FieldDefs.Add(K, ftString, 30, False);
 
      JO.Next;
    end;
 
    MDB.CreateDataSet;
    JSONToDataSet(JAry,mdb);
    MDB.Post;
 
    MDB.First;
  end;
end;
还有给 DataSet转到 JARY的 差不多的 这里就不贴了应该用的不多。

记得引用单元

          XSuperJSON,
         XDataToJson,

         XSuperObject,

         FireDAC.Comp.Client;

来源:http://www.icy6.com/delphi/json_1.html

相关阅读 >>

Delphi paramstr 获取外部参数

Delphi access数据库密码的mdb的访问报错“无法启动应用程序,或是已被其他用户已独占方式打开”

Delphi 关闭所有正在运行的程序

Delphi 使用泛型的 tarray 为动态数组排序

Delphi 关于汉字换行问题

Delphi 验证ip地址

Delphi使用进行post数据时超时设置

Delphi 递归获取窗口所有子窗口所以句柄

Delphi 关于 tregex.split()

Delphi xe6调用android标准功能

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...