【delphi】数据集和JSON互相转换(DataSetConverter4D 开源项目)

在delphi的开发过程中,难免需要数据表和JSON之间进行转换,特别是在Rest API的开发过程中,这就是必须的。还好开源项目:DataSetConverter4D 提供了方便,感谢开源项目的贡献者!

演示程序:包含 DataSetConverter4D 开源项目和 Format_JSON 函数。演示程序下载

 

一、Convert DataSet to JSON:

uses 
  DataSetConverter4D, 
  DataSetConverter4D.Impl;    

var
  ja: TJSONArray;
  jo: TJSONObject;
begin
  fCdsCustomers.DataSetField := nil;
  fCdsCustomers.CreateDataSet;

  fCdsCustomers.Append;
  fCdsCustomers.FieldByName('Id').AsInteger := 1;
  fCdsCustomers.FieldByName('Name').AsString := 'Customers 1';
  fCdsCustomers.FieldByName('Birth').AsDateTime := StrToDateTime('22/01/2014 14:05:03');
  fCdsCustomers.Post;

  fCdsCustomers.Append;
  fCdsCustomers.FieldByName('Id').AsInteger := 2;
  fCdsCustomers.FieldByName('Name').AsString := 'Customers 2';
  fCdsCustomers.FieldByName('Birth').AsDateTime := StrToDateTime('22/01/2014 14:05:03');
  fCdsCustomers.Post;

  //Convert all records	
  ja := TConverter.New.DataSet(fCdsCustomers).AsJSONArray;
  
  //Convert current record
  jo := TConverter.New.DataSet.Source(fCdsCustomers).AsJSONObject;

  ja.Free;
  jo.Free;
end;

二、Convert JSON to DataSet:

uses 
  DataSetConverter4D, 
  DataSetConverter4D.Impl;  

JSON_ARRAY =
		[{
			"Id": 1,
			"Name": "Customers 1",
			"Birth": "2014-01-22 14:05:03"
		}, {
			"Id": 2,
			"Name": "Customers 2",
			"Birth": "2014-01-22 14:05:03"
		}]      
			  
JSON_OBJECT =
		{
			"Id": 2,
			"Name": "Customers 2",
			"Birth": "2014-01-22 14:05:03"
		}
var
  ja: TJSONArray;
  jo: TJSONObject;
begin
  fCdsCustomers.CreateDataSet;

  ja := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(JSON_ARRAY), 0) as TJSONArray;
  jo := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(JSON_OBJECT), 0) as TJSONObject;

  //Convert one record
  TConverter.New.JSON(jo).ToDataSet(fCdsCustomers);

  fCdsCustomers.EmptyDataSet;

  //Convert all records
  TConverter.New.JSON.Source(ja).ToDataSet(fCdsCustomers);

  ja.Free;
  jo.Free;
end;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值