Delphi DataSet和JSON互转函数

一、DataSet转JSON

[delphi] view plain copy  print?

  1. //1)数据集转换为JSON字符串:  
  2. //需USES System.JSON;  
  3.   
  4. function DataSetToJson(ADataset: TDataSet): string;  
  5. // [{"CityId":"18","CityName":"西安"},{"CityId":"53","CityName":"广州"}]  
  6. var  
  7.   LRecord: string;  
  8.   LField: TField;  
  9.   i: integer;  
  10. begin  
  11.   Result := '';  
  12.   if (not ADataset.Active) or (ADataset.IsEmpty) then  
  13.     Exit;  
  14.   Result := '[';  
  15.   ADataset.DisableControls;  
  16.   ADataset.First;  
  17.   while not ADataset.Eof do  
  18.   begin  
  19.     for i := 0 to ADataset.FieldCount - 1 do  
  20.     begin  
  21.       LField := ADataset.Fields[i];  
  22.       if LRecord = '' then  
  23.         LRecord := '{"' + LField.FieldName + '":"' + LField.Text + '"'  
  24.       else  
  25.         LRecord := LRecord + ',"' + LField.FieldName + '":"' + LField.Text + '"';  
  26.       if i = ADataset.FieldCount - 1 then  
  27.       begin  
  28.         LRecord := LRecord + '}';  
  29.         if Result = '[' then  
  30.           Result := Result + LRecord  
  31.         else  
  32.           Result := Result + ',' + LRecord;  
  33.         LRecord := '';  
  34.       end;  
  35.     end;  
  36.     ADataset.Next;  
  37.   end;  
  38.   ADataset.EnableControls;  
  39.   Result := Result + ']';  
  40. end;  
  41. 二、JSON转DataSet  //dataset需要先建立列字段
  42. //2)JSON字符串转换为数据集:  
  43.   
  44. procedure JsonToDataSet(AJson: string; ADataset: TDataSet);  
  45. var  
  46.   jDataSet: TJSONArray;  
  47.   jRecord: TJSONObject;  
  48.   i, j: Integer;  
  49. begin  
  50.   if (AJson = '') or (ADataset = nil) or (not ADataset.Active) then  
  51.     Exit;  
  52.   jDataSet := TJSONObject.Create.ParseJSONValue(AJson, True) as TJSONArray;  
  53.   while not ADataset.Eof do  
  54.     ADataset.Delete;  
  55.   for i := 0 to jDataSet.Size - 1 do  
  56.   begin  
  57.     ADataset.Append;  
  58.     jRecord := jDataSet.Get(i) as TJSONObject;  
  59.     for j := 0 to ADataset.FieldCount - 1 do  
  60.       ADataset.Fields[j].Text := jRecord.GetValue(ADataset.Fields[j].FieldName).ToString;  
  61.     ADataset.Post;  
  62.   end;  
  63. end;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi是一种开发工具,可以很方便地将JSON数据转换为DataSetDataSetDelphi中用于存储和处理数据的组件,而JSON是一种轻量级的数据交换格式。 要快速将JSON数据转换为DataSet,我们首先需要使用DelphiJSON相关工具库来解析JSON数据。Delphi提供了许多用于JSON处理的单元,例如Data.DBXJSON和System.JSON等。 首先,我们需要将JSON数据加载到一个TJSONObject对象中。可以通过使用TJSONObject.ParseJSONValue方法将JSON字符串转换为TJSONValue对象,再将其转换为TJSONObject。然后,我们可以使用TJSONObject的方法和属性来获取JSON数据的各个部分,如键值对、数组和嵌套的JSON对象。 接下来,我们可以创建一个TDataSet对象,如TClientDataSet或TFDMemTable,作为最终的DataSet。然后,我们可以使用TDataSet的FieldDefs属性来定义DataSet的字段结构,以匹配JSON数据的结构。可以根据JSON数据中键值对的名称和类型来定义字段。 一旦字段结构定义完毕,我们可以使用TDataSet的Insert和Edit方法来添加或编辑数据行。可以通过访问TDataSet的Fields属性,然后使用TField的AsInteger、AsFloat、AsString等方法来给字段赋值。 最后,我们可以使用TDataSet的SaveToFile或SaveToStream方法将DataSet保存到文件或流中,以供后续使用或展示。 总结起来,将JSON转换为DataSet的过程如下: 1. 解析JSON数据并创建TJSONObject对象。 2. 创建TDataSet对象,并定义字段结构。 3. 使用TDataSet的Insert和Edit方法添加或编辑数据行,从TJSONObject中获取数据,并赋值给字段。 4. 保存DataSet到文件或流中。 将JSON数据转换为DataSet可以方便地在Delphi中进行数据处理和操作。这种转换方式允许我们以更直观的方式操作和展示数据,同时也提供了方便的数据导入和导出功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值