|
@@ -7,7 +7,7 @@
|
|
|
Author : Kike Pérez
|
|
|
Version : 1.12
|
|
|
Created : 21/05/2018
|
|
|
- Modified : 07/02/2021
|
|
|
+ Modified : 07/07/2021
|
|
|
|
|
|
This file is part of QuickLib: https://github.com/exilon/QuickLib
|
|
|
|
|
@@ -450,12 +450,14 @@ begin
|
|
|
end;
|
|
|
Result := aRecord;
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
+
|
|
|
function TRTTIJson.DeserializeStream(aObject: TObject; const aJson: TJSONValue): TObject;
|
|
|
var
|
|
|
stream : TStringStream;
|
|
|
begin
|
|
|
if fUseBase64Stream then stream := TStringStream.Create(Base64Decode(aJson.Value),TEncoding.Ansi)
|
|
|
- else stream := TStringStream.Create(aJson.Value,TEncoding.Ansi);
|
|
|
+ else stream := TStringStream.Create({$IFNDEF FPC}aJson.Value{$ELSE}string(aJson.Value){$ENDIF},TEncoding.Ansi);
|
|
|
try
|
|
|
TStream(aObject).CopyFrom(stream,stream.Size);
|
|
|
finally
|
|
@@ -463,8 +465,6 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-{$ENDIF}
|
|
|
-
|
|
|
constructor TRTTIJson.Create(aSerializeLevel : TSerializeLevel; aUseEnumNames : Boolean = True);
|
|
|
begin
|
|
|
fSerializeLevel := aSerializeLevel;
|
|
@@ -1444,6 +1444,24 @@ begin
|
|
|
if Result = nil then Result := TJSONNull.Create;
|
|
|
end;
|
|
|
|
|
|
+function TRTTIJson.SerializeStream(aObject: TObject): TJSONValue;
|
|
|
+var
|
|
|
+ stream : TStream;
|
|
|
+ json : string;
|
|
|
+begin
|
|
|
+ Result := nil;
|
|
|
+ try
|
|
|
+ stream := TStream(aObject);
|
|
|
+ if fUseBase64Stream then Result := TJSONString.Create(Base64Encode(StreamToString(stream,TEncoding.Ansi)))
|
|
|
+ else Result := TJSONString.Create(StreamToString(stream,TEncoding.Ansi));
|
|
|
+ except
|
|
|
+ on E : Exception do
|
|
|
+ begin
|
|
|
+ EJsonSerializeError.CreateFmt('Serialize Error -> Stream (%s)',[e.Message]);
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
{$IFNDEF FPC}
|
|
|
function TRTTIJson.SerializeDynArray(const aValue: TValue; aMaxElements : Integer = -1) : TJsonArray;
|
|
|
var
|
|
@@ -1518,24 +1536,6 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-function TRTTIJson.SerializeStream(aObject: TObject): TJSONValue;
|
|
|
-var
|
|
|
- stream : TStream;
|
|
|
- json : string;
|
|
|
-begin
|
|
|
- Result := nil;
|
|
|
- try
|
|
|
- stream := TStream(aObject);
|
|
|
- if fUseBase64Stream then Result := TJSONString.Create(Base64Encode(StreamToString(stream,TEncoding.Ansi)))
|
|
|
- else Result := TJSONString.Create(StreamToString(stream,TEncoding.Ansi));
|
|
|
- except
|
|
|
- on E : Exception do
|
|
|
- begin
|
|
|
- EJsonSerializeError.CreateFmt('Serialize Error -> Stream (%s)',[e.Message]);
|
|
|
- end;
|
|
|
- end;
|
|
|
-end;
|
|
|
-
|
|
|
{$ELSE}
|
|
|
function TRTTIJson.GetPropType(aPropInfo: PPropInfo): PTypeInfo;
|
|
|
begin
|
|
@@ -1891,7 +1891,6 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-{$IFNDEF FPC}
|
|
|
function TJsonSerializer.JsonStreamToObject(aObject: TObject; aJsonStream: TStream): TObject;
|
|
|
var
|
|
|
json : string;
|
|
@@ -1905,6 +1904,8 @@ begin
|
|
|
Result := JsonToObject(aObject,json);
|
|
|
end;
|
|
|
|
|
|
+{$IFNDEF FPC}
|
|
|
+
|
|
|
function TJsonSerializer.JsonToArray<T>(const aJson: string): TArray<T>;
|
|
|
var
|
|
|
jarray: TJSONArray;
|