如何使用X-SuperObject

时间:2018-10-04 08:11:55

标签: json delphi serialization deserialization delphi-xe

X-SuperObject可以序列化/反序列化对象吗?例如,我具有以下结构:

TMyClass
  private
    FField: Integer;
  published
    property field: Integer read FField write FField;
end;

我可以使用X-SuperObject快速序列化/反序列化此对象的所有published属性,包括嵌套对象吗?如果可以,怎么办?

1 个答案:

答案 0 :(得分:0)

是的,X-SuperObject可以序列化/反序列化包括嵌套对象(当然有一些限制)。该文档虽然简短,但它们的示例涵盖了基础知识。

uses
  XSuperJSON, XSuperObject;

type
  TSubClass = class
    A: Integer;
    B: Integer;
  end;

  TMyClass = class
  private
    FField: Integer;
    FSampler: string;
    FSubClass: TSubClass;
  published
    property field: Integer read FField write FField;
    property subClass: TSubClass read FSubClass write FSubClass;
  end;

procedure TForm2.Button3Click(Sender: TObject);
var
  MyClass: TMyClass;
  S: string;
begin
  Memo1.Lines.Clear;

  MyClass := TMyClass.FromJSON('{"field":12}'); //,"subClass":{"A":208,"B":39}}');
  if MyClass.field = 12 then
    Memo1.Lines.Add('MyClass.field has the correct value of 12');
  if Assigned(MyClass.subClass) and (MyClass.subClass.A = 208) then
    Memo1.Lines.Add('MyClass.subClass.A has the correct value of 208');

  S := MyClass.AsJSON;
  Memo1.Lines.Add(S);

  if not Assigned(MyClass.subClass) then
    MyClass.subClass := TSubClass.Create;
  MyClass.subClass.A := 345;
  MyClass.subClass.B := 1024;

  S := MyClass.AsJSON;
  Memo1.Lines.Add(S);
end;

在学习PKGeorgiev的Delphi-JsonToDelphiClass之后,我在Delphi的System.JSON库中也取得了不错的成绩。有时需要添加一些属性以获得所需的结果,但是在大多数情况下,它对于股票RTL非常有能力。 https://github.com/PKGeorgiev/Delphi-JsonToDelphiClass