解决Delphi中自带Json处理单元中关键字在序列化和反序列化中的冲突问题。
这个是一个非常常见的问题,以前好像搜索到过,但是不知道为什么没有了,所以只能自己重写吧,参看代码:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
System.Json,
System.JSON.Types, System.JSON.Serializers, System.JSON.Writers, System.Json.Readers,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TTestRec = packed record
[JSONMarshalled(True)]//是否序列化到Json字符串
[JSONName('name')]//序列化到Json字符串中的名字
NameS: string;
[JSONName('begin')]
BeginS: string;
[JSONName('end')]
EndS: string;
[JSONName('type')]
TypeS: string;
end;
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
ATR: TTestRec;
begin
ATR.BeginS := '111';
ATR.EndS := '222';
ATR.TypeS := '333';
ATR.NameS := '444';
Memo1.Lines.Add(TJsonSerializer.Create.Serialize(ATR));
end;
end.