首页 > 其他分享 >mormot2 笔记(三) 实体转JSON

mormot2 笔记(三) 实体转JSON

时间:2023-08-25 14:28:06浏览次数:31  
标签:end Create 笔记 JSON FSex TOL mormot2 var TObjectList

  TOL = class(TObject)
  public
    procedure W(W: TJsonWriter; Instance: TObject; Options: TTextWriterWriteObjectOptions);
  end;

  TPerson = class
  private
    FName: string;
    FID: integer;
    FSex: Byte;
  published
    property ID: integer read FID write FID;
    property name: string read FName write FName;
    property sex: Byte read FSex write FSex;
  end;

  TTestObject = class
  private
    FL: TObjectList<TPerson>;
  public
    constructor Create;
  published
    property L: TObjectList<TPerson> read FL write FL;
  end;



procedure TForm1.Button3Click(Sender: TObject);
begin
  var OL := TOL.Create;

  var TestObj := TTestObject.Create;
  for var I := 0 to 2 do
  begin
    var p := TPerson.Create;
    p.FName := 'JJW';
    p.FID := 1;
    p.FSex := 1;
    TestObj.L.Add(p);
  end;

  //方法一
  Rtti.RegisterClass(TObjectList<TPerson>).JsonSave := Rtti.RegisterClass(TObjectList).JsonSave;
  Memo1.Text := ObjectToJson(TestObj, [woObjectListWontStoreClassName]);


  //方法二
  var rj := TRttiJson.RegisterCustomSerializerClass(TObjectList<TPerson>, nil, OL.W);
  var jsonStr: RawUtf8;
  SaveJson(TestObj, TypeInfo(TTestObject), [], jsonStr, [woObjectListWontStoreClassName]);
  Memo1.Text := jsonStr;
end;


{ TOL }
procedure TOL.W(W: TJsonWriter; Instance: TObject; Options: TTextWriterWriteObjectOptions);
begin
  W.Add('[');
  var p := TList(Instance);
  for var I := 0 to P.Count-1 do
    W.WriteObject(P[I]);
  w.Add(']');
end;
View Code

针对 每个实体类,必须 TObjectList<TXXXObject> 注册一遍,感觉也挺麻烦的。

标签:end,Create,笔记,JSON,FSex,TOL,mormot2,var,TObjectList
From: https://www.cnblogs.com/Jiaojiawang/p/17656781.html

相关文章

  • 直播平台搭建,JSON.parseObject的几种用法
    直播平台搭建,JSON.parseObject的几种用法一.result格式: {  "success":"true",  "returnAddress":"123"} JSONObjectjsonObject=JSON.parseObject(result); //转换成objectJsonObject.getString("returnAddress") //获取object中ret......
  • Robot 框架学习笔记
    Robot框架学习笔记为了更好地让读者理解快速学习新框架的思路,笔者接下来会继续介绍另一个名为Robot的自动化测试框架,希望读者能参考笔者从零开始讲解一个开发/测试框架的流程,从中总结出适合于自己的快速学习方法。与Selenium框架相比,Robot框架是一款更为通用的、可扩展的......
  • 使用C#实现PHP语言中的 json_encode
    php语言:md5(json_encode(params).apiKey)params轉json字串,再接APIKey,最後整個字串md5加密C#语言varserializer=newJavaScriptSerializer();stringjson=serializer.Serialize(new{param1="data1",param2="data2"});参考地址:https://www.jb51.cc/cshar......
  • ajax完美解决跨域问题(jsonp、nginx反向代理)
    做过web前端人都知道,经常会有ajax跨域问题,下面列举我经常使用的解决办法第一种:使用jsonp,jquery的ajax方法支持jsonp,但是最大的缺点就是只支持get方式,而且服务端也要修改客户端test.html代码<!DOCTYPEhtml><html><head> <title>工作端</title> <metaname="viewport"content=......
  • [算法学习笔记] 换根dp
    换根dp一般不会指定根节点,并且根节点的变化会对一些值进行改变。因此我们需要转移根。换根dp一般需要预处理一下一个节点的值,然后对于任意节点开始树上dp转移。所以我们常用两次dfs,第一次dfs预处理,第二次dfs为树上dp。一般比较套路。接下来会给出一个典型例题。典例1:L......
  • 拓扑排序学习笔记
    思想拓扑,一看就是从图的开始开始开拓,并按被开拓到的顺序排序拓扑排序的思想如下:将入度为\(0\)的点删除,并记录它被删除的顺序,直到没有点则结束程序图解如本图的拓扑序就为123541.发现1入度为0删除1,2/3的入度减\(1\)2.发现2入度为0删除2,5的入度减\(1\)3.发现3......
  • 最小生成树学习笔记
    Prim算法prim算法基本思想:基于点的解决方式先随便选择一个点s作为起点,把其他所有点设为未添加节点,再设一dis数组,代表每个节点到最小生成树最近点的距离,易得一开始只有dis[s]=0,其他均为∞。每轮找到dis值最小且未添加过的节点加入生成树中,且使用这个节点的邻边去更新它的邻点......
  • 并查集学习笔记
    并查集的定义并查集是一种树型的数据结构,用于处理一些不相交集合(disjointsets)的合并及查询问题。常常在使用中以森林来表示。——百度百科并查集,顾名思义,支持以下两种操作操作:并(Union):把两个不相交的集合合并为一个集合。查(Find):查询两个元素是否在同一个集合中。并......
  • 字典树学习笔记
    字典树字典树(Trie)简介又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比......
  • package.json中 版本号详解
    转自:https://blog.csdn.net/ZYS10000/article/details/129123855https://blog.csdn.net/njweiyukun/article/details/70309066......