5
5
Unit : Quick.JSONRecord
6
6
Description : Serializable class
7
7
Author : Kike Pérez
8
- Version : 1.1
8
+ Version : 1.2
9
9
Created : 05/05/2018
10
- Modified : 28/08 /2018
10
+ Modified : 06/11 /2018
11
11
12
12
This file is part of QuickLib: https://github.com/exilon/QuickLib
13
13
33
33
interface
34
34
35
35
uses
36
+ Classes,
36
37
Quick.Json.Serializer,
37
38
Quick.AutoMapper;
38
39
@@ -41,16 +42,21 @@ interface
41
42
IJsonable = interface
42
43
[' {AF71F59C-89A5-4BFB-8227-0CC3068B7671}' ]
43
44
procedure FromJson (const aJson : string);
45
+ procedure LoadFromFile (const aJsonFilename : string);
44
46
function ToJson (aIdent : Boolean = False) : string;
47
+ procedure SaveToFile (const aJsonFilename : string; aIndent : Boolean = True);
45
48
procedure MapTo (aTgtObj : TObject);
46
49
procedure MapFrom (aSrcObj : TObject);
47
50
end ;
48
51
49
52
TJsonRecord = class (TInterfacedObject,IJsonable)
50
53
public
51
54
constructor CreateFromJson(const aJson : string);
55
+ constructor CreateFromFile(const aJsonFilename : string);
56
+ procedure LoadFromFile (const aJsonFilename : string);
52
57
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);
54
60
function Map <T : class , constructor > : T;
55
61
procedure MapTo (aTgtObj : TObject);
56
62
procedure MapFrom (aSrcObj : TObject);
@@ -86,6 +92,45 @@ procedure TJsonRecord.FromJson(const aJson: string);
86
92
end ;
87
93
end ;
88
94
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
+
89
134
function TJsonRecord.Map <T> : T;
90
135
begin
91
136
Result := TMapper<T>.Map(Self);
@@ -101,13 +146,13 @@ procedure TJsonRecord.MapTo(aTgtObj: TObject);
101
146
TObjMapper.Map(Self,aTgtObj);
102
147
end ;
103
148
104
- function TJsonRecord.ToJson (aIdent : Boolean = False) : string;
149
+ function TJsonRecord.ToJson (aIndent : Boolean = False) : string;
105
150
var
106
151
serializer : TJsonSerializer;
107
152
begin
108
153
serializer := TJsonSerializer.Create(TSerializeLevel.slPublishedProperty);
109
154
try
110
- Result := serializer.ObjectToJson(Self,aIdent );
155
+ Result := serializer.ObjectToJson(Self,aIndent );
111
156
finally
112
157
serializer.Free;
113
158
end ;
0 commit comments