学习unigui过程中,出现使用json和fdquery等数据交换的太多场景要求。

感谢开源DataSetConverter4D提供轮子。

直接抄demo:

{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;

感谢:https://blog.csdn.net/sensor_WU/article/details/119730146

学习unigui【17】-数据集和JSON互相转换-DataSetConverter4D 开源项目的更多相关文章

  1. mormot 数据集和JSON互相转换

    mormot 数据集和JSON互相转换 uses SynVirtualDataSet, mORMotMidasVCL, SynCommons; procedure TForm1.Button1Clic ...

  2. 数据集和JSON相互转换

    使用DELPHI原生类实现数据集和JSON相互转换  JSON二要素:数组和对象.对象可以包含数组,数组可以包含对象.无层数限制.OLEVARIANT也类似,OLEVARIANT的一个元素又可以是OL ...

  3. 学习Swift,一定不能错过的10大开源项目!

    如果你是位iOS开发者,或者你正想进入该行业,那么Swift为你提供了一个绝佳的机会.Swift的设计非常优雅,较Obj-C更易于学习,当然也非常强大. 为了指导开发者使用Swift进行开发,苹果发布 ...

  4. 开源项目SuperSocket的学习笔记

    近几日想在一个项目中引进一个Socket Server,用来接收客户端发送的命令消息并根据具体的业务逻辑对消息进行处理,然后转发给其它在线的客户端.因为以前在博客园关注过江大渔开源的SuperSock ...

  5. 学习React Native必看的几个开源项目

    学习React native ,分享几个不错的开源项目,相信你学完之后,一定会有所收获.如果还没有了解RN的同学们可以参考手把手教你React Native 实战之开山篇<一> 1.Fac ...

  6. shell编程学习之使用jq对json数据进行提取

    shell编程学习之使用jq对json提取 jq命令允许直接在命令行下对JSON进行操作,包括分片.过滤.转换等 ,jq是用C编写,没有运行时依赖,所以几乎可以运行在任何系统上.预编译的二进制文件可以 ...

  7. [知了堂学习笔记]_JSON数据操作第1讲(初识JSON)

    一.认识JSON 什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式..它基于 ECMAScript (w3c制定的js规 ...

  8. JavaSE学习(二):进制转换—数据类型转换—Java运算符

    一.进制转换 1.1 其他进制转十进制(以十六进制为例): 十六进制范围:0-9, A-F对应数字10-15 2A7E(16)  =  14*16(0) +7*16(1) + 10*16(2)  + ...

  9. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  10. 4.keras实现-->生成式深度学习之用变分自编码器VAE生成图像(mnist数据集和名人头像数据集)

    变分自编码器(VAE,variatinal autoencoder)   VS    生成式对抗网络(GAN,generative adversarial network) 两者不仅适用于图像,还可以 ...

随机推荐

  1. 使用ffmpeg去除音频静音

    直接使用cmd命令ffmpeg -i input.wav -af silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-30dB ...

  2. Calendar日历类(抽象类)的使用

    4. java.util.Calendar( 日历)类 类 Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能. 获取Calendar实例的方法 使用Calendar.get ...

  3. 2024年春秋杯网络安全联赛冬季赛部分wp

    部分附件下载地址: https://pan.baidu.com/s/1Q6FjD5K-XLI-EuRLhxLq1Q 提取码: jay1 Misc day1-简单算术 根据提示应该是异或 下载文件是一个 ...

  4. ORACLE 中报ORA-30926 无法在源表中获得稳定的行的处理

    在库存处理的业务中有这么一个场景,一张处方划价单进行库存扣减处理,如果此单据同一商品有两行以上,同时扣减同一行库存记录,使用MERGE INTO批量更新是就会报错:ORA-30926 无法在源表中获得 ...

  5. 一键部署,玩转AI!天翼云Llama 3大模型学习机来了!

    近日,Meta公司发布了其最新研发成果--开源大模型Llama 3,共包含Llama 3 8B和Llama 3 70B两种规格,参数量级分别为80亿与700亿,并表示这是目前同体量下性能最好的开源模型 ...

  6. MySql中创建用户以及设置其操作权限

    以下设置针对MySql8+版本进行测试,低版本暂无测试. 以管理员身份CMD并定位到MySql安装的bin目录,然后执行命令mysql -u root -p登录到MySql,然后输入登录密码,登录成功 ...

  7. Linux 文件压缩和解压缩命令

    Linux 文件压缩和解压缩命令 在Linux操作系统中,文件压缩和解压缩是日常管理和维护任务中的重要一环.通过压缩文件,可以显著减少存储空间的使用,并加快网络传输速度.Linux提供了多种压缩和解压 ...

  8. OI 博弈论若干模型总结(Genshing)

    OI博弈论的若干模型 OI 不是知识竞赛. 平等博弈是完全信息的(知道双方目标及操作收益),交替行动的,知道当前局面和转移的,平等(决策和当前状态操作者无关)的. 不平等博弈和上面一致,但是有一方更加 ...

  9. 本地部署DeepSeek-R1并使用自定义的知识库AnythingLLM

    一.基础信息 1.概述 以下是私有化部署方案的优势: 性能卓越:提供媲美商业模型的对话交互体验 环境隔离:完全离线运行,杜绝数据外泄风险 数据可控:完全掌控数据资产,符合合规要求 2.硬件环境 CPU ...

  10. linux mint安装hadoop

    一.安装 安装ssh openssh-server   配置jdk环境变量~/.bashrc参考 export JAVA_HOME=/opt/jdk1.7.0_55/ export JRE_HOME= ...