Data.FireDACJSONReflect多数据集与压缩字节流化的加密的JSon序列化-Delphi 10大数据的实现方法之Json序列化
Data.FireDACJSONReflect多数据集与压缩字节流化的加密的JSon序列化-Delphi 10大数据的实现方法之Json序列化
uses Data.FireDACJSONReflect
// C:\Program Files (x86)\Embarcadero\Studio\20.0\source\data\datasnap\Data.FireDACJSONReflect.pas
TFDJSONInterceptor = class(TJSONInterceptor)
public
// Conversion utility methods
class function ItemListToJSONObject(const AList: TItemList; const AJSONObject: TJSONObject): Boolean; static;
class function DataSetsToJSONObject(const ADataSets: TFDJSONDataSetsBase; const AJSONObject: TJSONObject): Boolean; static;
class function JSONObjectToItemList(const AJSONObject: TJSONObject; const AList: TItemList): Boolean; static;
class function JSONObjectToDataSets(const AJSONObject: TJSONObject; const ADataSets: TFDJSONDataSetsBase): Boolean; static;
destructor Destroy; override;
// Reverter/Converter overrides
function TypeObjectConverter(AData: TObject): TObject; override;
function TypeObjectReverter(AData: TObject): TObject; override;
end;
其中:ItemListToJSONObject
LJSONValue_ofDataSet := DataSetToJSONValue(LDataSet); //: TJSONValue;
//: function DataSetToJSONValue(const ADataSet: TFDAdaptedDataSet): TJSONValue;
->
S := DataSetToString(ADataSet);
//: function DataSetToString(const ADataSet: TFDAdaptedDataSet): string;
->
function DataSetToString(const ADataSet: TFDAdaptedDataSet): string;
var
LBinary64: string;
LMemoryStream: TMemoryStream;
LStringStream: TStringStream;
LDstStream: TMemoryStream;
Zipper: TZCompressionStream;
begin
LDstStream := TMemoryStream.Create;
try
LMemoryStream := TMemoryStream.Create;
try
ADataSet.SaveToStream(LMemoryStream, TFDStorageFormat.sfBinary);
LMemoryStream.Seek(0, TSeekOrigin.soBeginning);
Zipper := TZCompressionStream.Create(clDefault, LDstStream);
try
Zipper.CopyFrom(LMemoryStream, LMemoryStream.Size);
finally
Zipper.Free;
end;
finally
LMemoryStream.Free;
end;
LDstStream.Seek(0, TSeekOrigin.soBeginning);
LStringStream := TStringStream.Create;
try
TNetEncoding.Base64.Encode(LDstStream, LStringStream);
LBinary64 := LStringStream.DataString;
finally
LStringStream.Free;
end;
finally
LDstStream.Free;
end;
Result := LBinary64;
end;
Base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便。在实际应用上,Base64除了能将Binary资料可视化之外,也常用来表示字串加密过后的内容。采用Base64编码具有不可读性,需要Decode解码后才能阅读。https://baike.baidu.com/item/base64/8545775?fr=aladdin
// : 返回到客户端:类似这样的二进位Json即Bson数据的流化数据:
{
"result": [
{
"CtL00001": "eJztvQuYHMdxGDyASIikKJKiXrRESifZlkEbim/37gBcHMc+3AHEQfci7vgAE2cyNzu7O8TuzmJm\r\n9g5Hx4/Ejh3n5diOHb/imJEoy9GDT/AFkBAtkhIBUqDFl2RZ+ajo8dlxojhO+MuhZfLv7umZ6e6p\r\n6pnduwFACuBH4G6qu6enuqq6qrq6amJq1+KlxugVp67fbLxqbDI2vbr51TecZ1xmGMakERozxjD/\r\nr2KcDz7dQjoZxhsN+ucCw7jQ+Jnf+E3jIuPH32sYr77p1YvPM84jANeoke7xT1GXS4w3G5eSlgYZ\r\ndtNbjE2XG5veamx6m7Hp7car5M872N/vNDZdYWz6HmPTu4xN7zY2XZmMcRXr+Qp9wTvID7ZhknlZ\r\nxrLRMhyjQ35qk3/P18C2GJvZJN5jvNfYmUyCvJ68coi98kpN76tYn/exv9kkrsg0XSLzDNlP52uh\r\nW4w3JBOZQiai638V6/U+9jebysVJ4zWjy16vPtnC0Bi9cjPySrXPVazl+9jf7DUX8QY9I2AvkX/f\r\nQp7kvULukXkBxf5+ArANz/DJkk+Sf3tkBUK+rjBsC/kvS1zZdYV7C2RFf7iR4DlGovz7Fkby0fdh\r\nr5F7REO/L33BB8gPM2RBA/JeupyUrkzjOtK4Rp6G5Lcp9q9FXl687RbKhWRi7ze+lxEWNLHio11l\r\nvJO0/T42Epv0D+Z2XSR/+wSdNluo/tpvIfIjb/L9jZj5gCGw+wLp4JEB4mkXabWFLaV+skXGyUyR\r\nLs+UMUs62qShw79qDyPWReMQ4XqXPRnhhFGs7RbjTQnF/o9LcMIoNtpVbIz3sb9feeXV73/l1Q+8\r\nazI6arD5vIu08AlWGmwNIszGFPAeiQKyWLyC4X6Cjeqy2ftslAbBSbyGl/P5iLQq01vc8j1stCne\r\nZonRjMNGpbPp0qs1pL3FVuodygjx8ytBOowp5zLjevKTQ3AaP7mEYNQTft/Cf7+I/0sp/TIJQ/Q9\r\nV7B1aLGZRpiI+1+p8OQ+Psuo3yUS7gPj/wcCWOAL"
}
]
}
// : \r\n
\n是换行,英文是New line。\r是回车,英文是Carriage return。
建议大家养成习惯,尽快调整以前的老代码,尽快直接使用成熟的中间件,比如:高勇的“三层中间件源码库”,处理起来系统性、稳定性、安全性、并发性能很好。
Data.FireDACJSONReflect多数据集与压缩字节流化的加密的JSon序列化-Delphi 10大数据的实现方法之Json序列化相关推荐
- 「场景化」增长的践行者:探寻大数据时代的商业变革
今日世界,产品与服务的可替代性日益显著,因此,企业必须知道并深入了解用户的期望与需求,这样才能赢得关键竞争优势.大数据分析可以将所有数据源集中起来,并提供获得用户数据的简易途径,之后便可对用户数据加以 ...
- The Pathologies of Big Data(大数据病理)
论文目录 大数据病理(The Pathologies of Big Data) 处理大数据(Dealing with Big Data) 硬件限制(Hard Limits) 分布式计算作为大数据策略( ...
- 【华为云技术分享】大数据容器化,头部玩家尝到了甜头
[摘要] 大数据容器化,大势所趋.头部玩家在进行大数据容器化后,尝到了甜头? 大数据的需求热度,从来都是这个时代的浪尖.然而由于大数据系统的复杂性,一度导致业界大数据已死的各种声音不断.尤其是当Map ...
- Greenplum助医疗大数据从“奢侈品”走向常态化
增加医疗大数据平台的便捷功能服务,推动医疗大数据的常态化应用. 近年来,大数据产业发展如火如荼.不过,在医疗领域,医疗大数据平台在不少医院心目中还是曲高和寡的"奢侈品". 2019 ...
- 我国亟待建立全国危化品安全监管大数据平台
天津港"8·12"瑞海公司危险品仓库特别重大火灾爆炸事故,人员伤亡惨重.经济损失巨大,引起社会广泛关注,我国危化品安全生产形势严峻且复杂,创新危化品安全监管方式,提升监管能力势在必 ...
- Spark(六):SparkSQLAndDataFrames对结构化数据集与非结构化数据的处理
为什么80%的码农都做不了架构师?>>> 一:简单了解SparkSQL. Spark SQL 是结构化的数据处理一个Spark模块.与基本的Spark RDD API不同,Sp ...
- titanic数据集_TF2.0结构化数据建模流程范例
尽管TensorFlow设计上足够灵活,可以用于进行各种复杂的数值计算.但通常人们使用TensorFlow来实现机器学习模型,尤其常用于实现神经网络模型. 从原理上说可以使用张量构建计算图来定义神经网 ...
- java 压缩字节流_java 压缩 字节流 ,C#解压的问题
给现有的.Net项目增加安卓平台客户端, 目前使用的 ComponentAce.Compression.Libs.zlib 压缩解压字节流 C#代码片段: ... ZOutputStream outZ ...
- 【步兵 工具篇】lzma算法,压缩字节流
[步兵 工具篇]lzma算法,压缩字节流 by EOS. 本来上周就打算写的,不过孩子连续高烧,住院了一个礼拜.一个礼拜没回家,还写什么博客. 虽然花了不少钱,好在孩子也恢复过来了,继续努力,挣钱养家 ...
最新文章
- uniapp自定义导航栏样式,自定义导航栏组件使用说明,兼容小程序和H5及各端
- 图灵四月书讯 ——经典与技术前沿的融合
- POJ 3461 还是两种方法
- AC日记——食物链 codevs 1047
- python PyQt5.QtWidgets.QWidget类
- 元胞自动机(Cellular Automata)
- 【开源项目】EasyCmd命令图形化软件
- 怎么查看父子级目录linux,如何查找linux中特定父目录的所有文件?
- 编写10ms延时的子程序c语言,求解!!!用汇编语言编写延时程序问题!!!!...
- 如何让大数据分析更有效
- 小程序影藏溢出的gif_Win10即将推出GIF录制编辑工具,不再需要第三方软件了
- UVA515 King
- 据说是学习python最全的资料
- C语言学生成绩管理系统(综合项目)
- osg学习(四十五)有关倾斜摄影的osgb、gltf、3DTiles格式
- win7网上邻居_win7系统网上邻居在哪
- IMO A.688(16) 寝具用品点燃性测试
- python怎么批量读取文件_python如何批量读取txt文件
- Java队列的poll,peek,element的区别
- 孟婆汤传说!!!感人至极!