本文整理自网络,侵删。
工作的时候(虽然我不喜欢弄这些玩意儿) 需要将返回过来的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 access数据库密码的mdb的访问报错“无法启动应用程序,或是已被其他用户已独占方式打开”
更多相关阅读请进入《Delphi》频道 >>