123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- program ComplexObjects;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- Classes,
- System.SysUtils,
- Quick.Console,
- Quick.Json.Serializer;
- type
- TUser = class
- private
- fName : string;
- fAge : Integer;
- fPhoto : TMemoryStream;
- public
- constructor Create;
- destructor Destroy; override;
- published
- property Name : string read fName write fName;
- property Age : Integer read fAge write fAge;
- property Photo : TMemoryStream read fPhoto write fPhoto;
- end;
- var
- json : string;
- user : TUser;
- photosize : Integer;
- serializer : TJsonSerializer;
- { TUser }
- constructor TUser.Create;
- begin
- fPhoto := TMemoryStream.Create;
- end;
- destructor TUser.Destroy;
- begin
- fPhoto.Free;
- inherited;
- end;
- begin
- try
- user := TUser.Create;
- user.Name := 'John';
- user.Age := 30;
- user.Photo.LoadFromFile('.\photo.jpg');
- photosize := user.Photo.Size;
- cout('Photo Size: ' + photosize.ToString,ccWhite);
- serializer := TJsonSerializer.Create(TSerializeLevel.slPublicProperty,True);
- try
- //serializer.UseBase64Stream := False;
- //serialize
- cout('Serialize User:',ccYellow);
- json := serializer.ObjectToJson(user);
- //cout(json,ccWhite);
- user.Free;
- //deserialize
- cout('Deserialize User:',ccYellow);
- user := TUser.Create;
- serializer.JsonToObject(user,json);
- //check if deseralization is correct
- Assert(user.Name = 'John','Name serialize error!');
- Assert(user.Age = 30,'Age serialize error!');
- Assert(user.Photo.Size = photosize,'Photo serialize error!');
- user.Photo.SaveToFile('.\photo_new.jpg');
- cout('Photo Size: ' + photosize.ToString,ccWhite);
- cout(user.Name,ccWhite);
- finally
- serializer.Free;
- end;
- user.Free;
- ConsoleWaitForEnterKey;
- except
- on E: Exception do
- Writeln(E.ClassName, ': ', E.Message);
- end;
- end.
|