Quellcode durchsuchen

[jsonSerializer] some fpc compatibility fixes

Exilon vor 4 Jahren
Ursprung
Commit
347ca00b03
1 geänderte Dateien mit 24 neuen und 23 gelöschten Zeilen
  1. 24 23
      Quick.Json.Serializer.pas

+ 24 - 23
Quick.Json.Serializer.pas

@@ -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;