Skip to content

Commit 77c6290

Browse files
committed
Quick.JsonRecord load/save from/to json file
1 parent 0188928 commit 77c6290

File tree

1 file changed

+50
-5
lines changed

1 file changed

+50
-5
lines changed

Quick.JSONRecord.pas

+50-5
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
Unit : Quick.JSONRecord
66
Description : Serializable class
77
Author : Kike Pérez
8-
Version : 1.1
8+
Version : 1.2
99
Created : 05/05/2018
10-
Modified : 28/08/2018
10+
Modified : 06/11/2018
1111
1212
This file is part of QuickLib: https://github.com/exilon/QuickLib
1313
@@ -33,6 +33,7 @@
3333
interface
3434

3535
uses
36+
Classes,
3637
Quick.Json.Serializer,
3738
Quick.AutoMapper;
3839

@@ -41,16 +42,21 @@ interface
4142
IJsonable = interface
4243
['{AF71F59C-89A5-4BFB-8227-0CC3068B7671}']
4344
procedure FromJson(const aJson : string);
45+
procedure LoadFromFile(const aJsonFilename : string);
4446
function ToJson(aIdent : Boolean = False) : string;
47+
procedure SaveToFile(const aJsonFilename : string; aIndent : Boolean = True);
4548
procedure MapTo(aTgtObj : TObject);
4649
procedure MapFrom(aSrcObj : TObject);
4750
end;
4851

4952
TJsonRecord = class(TInterfacedObject,IJsonable)
5053
public
5154
constructor CreateFromJson(const aJson : string);
55+
constructor CreateFromFile(const aJsonFilename : string);
56+
procedure LoadFromFile(const aJsonFilename : string);
5257
procedure FromJson(const aJson : string);
53-
function ToJson(aIdent : Boolean = False) : string;
58+
function ToJson(aIndent : Boolean = False) : string;
59+
procedure SaveToFile(const aJsonFilename : string; aIndent : Boolean = True);
5460
function Map<T : class, constructor> : T;
5561
procedure MapTo(aTgtObj : TObject);
5662
procedure MapFrom(aSrcObj : TObject);
@@ -86,6 +92,45 @@ procedure TJsonRecord.FromJson(const aJson: string);
8692
end;
8793
end;
8894

95+
procedure TJsonRecord.LoadFromFile(const aJsonFilename: string);
96+
var
97+
json : TStringList;
98+
begin
99+
json := TStringList.Create;
100+
try
101+
json.LoadFromFile(aJsonFilename);
102+
Self.FromJson(json.Text);
103+
finally
104+
json.Free;
105+
end;
106+
end;
107+
108+
constructor TJsonRecord.CreateFromFile(const aJsonFilename : string);
109+
var
110+
json : TStringList;
111+
begin
112+
json := TStringList.Create;
113+
try
114+
json.LoadFromFile(aJsonFilename);
115+
CreateFromJson(json.Text);
116+
finally
117+
json.Free;
118+
end;
119+
end;
120+
121+
procedure TJsonRecord.SaveToFile(const aJsonFilename : string; aIndent : Boolean = True);
122+
var
123+
json : TStringList;
124+
begin
125+
json := TStringList.Create;
126+
try
127+
json.Text := Self.ToJson(aIndent);
128+
json.SaveToFile(aJsonFilename);
129+
finally
130+
json.Free;
131+
end;
132+
end;
133+
89134
function TJsonRecord.Map<T> : T;
90135
begin
91136
Result := TMapper<T>.Map(Self);
@@ -101,13 +146,13 @@ procedure TJsonRecord.MapTo(aTgtObj: TObject);
101146
TObjMapper.Map(Self,aTgtObj);
102147
end;
103148

104-
function TJsonRecord.ToJson(aIdent : Boolean = False) : string;
149+
function TJsonRecord.ToJson(aIndent : Boolean = False) : string;
105150
var
106151
serializer : TJsonSerializer;
107152
begin
108153
serializer := TJsonSerializer.Create(TSerializeLevel.slPublishedProperty);
109154
try
110-
Result := serializer.ObjectToJson(Self,aIdent);
155+
Result := serializer.ObjectToJson(Self,aIndent);
111156
finally
112157
serializer.Free;
113158
end;

0 commit comments

Comments
 (0)