Delphi通用的序列化代码

摘要:
typeTFoo=类公共函数Object2Json<(o:implementationfunctionTFoo.Json2Object<(j:string):T;=ctx.AsType<(SO[j]);终止函数TFoo.Object2Json<(o:T):字符串;obj:=ctx.AsJson<T>(o) ;
type
  TFoo = class
  public
    function Object2Json<T>(o: T): string;
    function Json2Object<T>(j: string): T;
  end;
  
implementation

function TFoo.Json2Object<T>(j: string): T;
var
  ctx: TSuperRttiContext;
begin
  ctx := TSuperRttiContext.Create;
  try
    Result := ctx.AsType<T>(SO[j]);
  finally
    ctx.Free;
  end;
end;

function TFoo.Object2Json<T>(o: T): string;
var
  ctx: TSuperRttiContext;
  obj: ISuperObject;
begin
  ctx := TSuperRttiContext.Create;
  try
    obj := ctx.AsJson<T>(o);
    Result := obj.AsString;
  finally
    ctx.Free;
  end;
end;

使用了SuperObject,需要编译器支持泛型特性,老版本的似乎只能是望梅止渴了

免责声明:文章转载自《Delphi通用的序列化代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用shell从DB2数据库导出数据PHP算法之两数相加下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CSS-三栏自适应高度

通过负边距(padding/-marging)实现三栏自适应高度; 解决思想:左边栏向左浮动,右边栏向右浮动,中间栏放到最后,不需要浮动; <div> <div class="leftSide">左边栏</div> <div class="rightSide">右边栏</div>...

[npm]npm audit fix

npm官网上查阅了对于npm audit fix的相关介绍。 npm audit : npm@5.10.0 & npm@6,允许开发人员分析复杂的代码,并查明特定的漏洞和缺陷。 npm audit fix :npm@6.1.0,  检测项目依赖中的漏洞并自动安装需要更新的有漏洞的依赖,而不必再自己进行跟踪和修复。 npm-audit 官网地址:do...

桌面文件删除时提示文件不存在的解决方法

问题现象: 桌面上突然有个文件,点击删除报该文件不存在与桌面中,无法删除 解决方案: 1、新建一个txt文件,随便命名,如del.txt 2、打开该txt,内容填”DEL /F /A /Q \?\%1RD /S /Q \?\%1“,然后保存 3、更改txt的后缀名为bat,即del.txt –>del.bat,然后会发现图标变了 4、将之前无法删除的...

Linux 环境下安装rlwrap工具

rlwrap项目是一个“readline包装器”,它使用GNU readline库来编辑任何其他命令的键 盘输入。通过rlwrap可以进行命令的上下切换,类似历史命令。 1、下载rlwrap rpm rlwrap rpm包可以通过:https://centos.pkgs.org/  获取   安装这个包可以解决下面截图问题 rlwrap能解决方向键上下切...

k8s架构

  master节点 k8s的集群由master和node组成,节点上运行着若干k8s服务。 master节点之上运行着的后台服务有kube-apiserver 、kube-scheduler、kube-controller-manager、etcd和pod网络。如下图所示 1. API Server(kube-apiserver) API Server...

css3写的实用表单美化

<!DOCTYPE html> <!--[if IE 7 ]> <html lang="en" class="ie7"> <![endif]--> <!--[if IE 8 ]> <html lang="en" class="ie8"> <![endif]--> <!...