- 人气:
- 放大
- 缩小
- 二维码
- 赞赏
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