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 idftp发送本机ip和外网ip

Delphi 控制台 输入输出实例代码

Delphi xe中 exit 的新用法

Delphi datasnap 初步入门使用总结

Delphi xe7 android 实现的在线更新app的一个程序

Delphi parent属性的另类用法

Delphi 根据分割符只取最后的值

Delphi 的字符及字符串 - char、ansichar、widechar、pchar、pansichar、pwidechar

Delphi 查找指定目录,指定扩展名的所有文件名

Delphi nethttpclient1 数据库查询

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



打赏

取消

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

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

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

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

评论

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