【问题标题】:How to serialize/deserialize objects using X-SuperObject如何使用 X-SuperObject 序列化/反序列化对象
【发布时间】:2019-03-09 13:37:54
【问题描述】:

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

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

我能否使用X-SuperObject 快速序列化/反序列化该对象的所有published-属性,包括嵌套对象?如果有,怎么做?

【问题讨论】:

    标签: json delphi serialization deserialization delphi-xe


    【解决方案1】:

    是的,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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2019-10-25
      • 2014-12-10
      • 2015-06-28
      • 2011-04-06
      相关资源
      最近更新 更多