首页 > 其他分享 >delphi json和protobuf序列

delphi json和protobuf序列

时间:2022-08-21 09:46:00浏览次数:68  
标签:function aRecord const protobuf delphi value json end class

delphi json和protobuf序列

unit serialize;
/// <author>cxg 2022-8-21</author>
interface

uses
  System.SysUtils, Grijjy.ProtocolBuffers,
  System.JSON.Serializers;

type
  TSerial = class
  public
    //unmarshal
    class function unmarshal<T: record>(const value: string): T; overload; //json
    class function unmarshal<T: record>(const value: tbytes): T; overload; //protobuf
    //marshal
    class function marshal<T: record>(const aRecord: T): string;   //json
    class function marshal2<T: record>(const aRecord: T): TBytes;  //protobuf
  end;

implementation

class function TSerial.marshal2<T>(const aRecord: T): TBytes;
begin
  var s: TgoProtocolBuffer := TgoProtocolBuffer.Create;
  Result := s.Serialize<T>(aRecord);
  s.Free;
end;

class function TSerial.marshal<T>(const aRecord: T): string;
begin
  var s: TJsonSerializer := TJsonSerializer.Create;
  Result := s.Serialize<T>(aRecord);
  s.Free;
end;

class function TSerial.unmarshal<T>(const value: string): T;
begin
  var s: TJsonSerializer := TJsonSerializer.Create;
  Result := s.Deserialize<T>(value);
  s.free;
end;

class function TSerial.unmarshal<T>(const value: tbytes): T;
begin
  var s: TgoProtocolBuffer := TgoProtocolBuffer.Create;
  s.Deserialize<T>(result, value);
  s.Free;
end;


end.

 

标签:function,aRecord,const,protobuf,delphi,value,json,end,class
From: https://www.cnblogs.com/hnxxcxg/p/16609347.html

相关文章

  • python获取返回的json中的某个字段值的函数
    响应报文的json一般为字典或者是列表嵌套字段的形式     defget_json_value(a,k,l:list):""":parama:传入的数据:paramkey:获取哪个字段值......
  • Vulfocus靶场 | Metabase geojson任意文件读取漏洞(CVE-2021-41277)
    漏洞描述etabase是一个开源数据分析平台。在受影响的版本中,已发现自定义GeoJSON地图(admin->settings->maps->custommaps->addamap)支持和潜在的本地文件包含(包括环......
  • MySQL JSON函数文档搬运
    本文搬运了MySQL对JSON的支持相关的函数/*自MySQL5.7版本以后,加入了JSON字段类型支持,并提供一系列函数实测字段类型设置为varchar,只要字段值为合法json,MYSQLJSO......
  • Java List转 JSONObject
    JavaList转JSONObjectpom.xml<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>......
  • JSON的概念和语法定义
    JSON的概念概念:JavaScriptObjectNotationJavaScript对象表示法json现在多用于存储和交换文本信息的语法进行数据的传输JSON比XML更小、更快,更易解析JSON是轻量......
  • delphi基于结构的CRUD(JSON)
    delphi基于结构的CRUD(JSON)以采购订单为例。unitrest.tcgddtcgdd2;//代码由代码工厂自动生成//2022-08-2016:04:54{$Idef.inc}interfaceuses{$IFDEFfiredac......
  • delphi基于结构的CRUD(protobuf)
    delphi基于结构的CRUD(protobuf)以采购订单为例。unitproto.tcgddtcgdd2;//代码由代码工厂自动生成//2022-08-2016:04:14{$Idef.inc}interfaceuses{$IFDEF......
  • JSON概念和JSON语法的定义与值的获取
    JSON概念概念: JavaScript Object NotationJavaScript对象标记法var p={"name":"张三","age":23,"gender":"男"}; json现在多用于存储和交换文本信息的语法......
  • FireDAC使用Mormot开发Rest服务器,返回JSON数据格式的问题
    FireDAC沿用了一贯的DataSnap的数据返回方式,这也使得开发出来的REST Server很给难给第三方应用提供服务用什么办法可以解决FireDAC直接序列返回的Json只是数据信息,而不是......
  • Delphi使用TStopwatch计时器精确计时【转】
    引用 System.Diagnostics单元属性:Elapsed获取当前实例测量得出的总运行时间。ElapsedMilliseconds 获取当前实例测量得出的总运行时间(以毫秒为......