Browse Source

Merge branch 'develop'

Exilon 5 years ago
parent
commit
898f91b7e0
2 changed files with 28 additions and 37 deletions
  1. 14 31
      Quick.JSON.Helper.pas
  2. 14 6
      Quick.Json.Serializer.pas

+ 14 - 31
Quick.JSON.Helper.pas

@@ -1,13 +1,13 @@
 { ***************************************************************************
 { ***************************************************************************
 
 
-  Copyright (c) 2015-2018 Kike Pérez
+  Copyright (c) 2015-2020 Kike Pérez
 
 
   Unit        : Quick.JSON.Helper
   Unit        : Quick.JSON.Helper
   Description : Utils for working with JSON
   Description : Utils for working with JSON
   Author      : Kike Pérez
   Author      : Kike Pérez
   Version     : 1.1
   Version     : 1.1
   Created     : 27/01/2017
   Created     : 27/01/2017
-  Modified    : 09/05/2018
+  Modified    : 16/01/2020
 
 
   This file is part of QuickLib: https://github.com/exilon/QuickLib
   This file is part of QuickLib: https://github.com/exilon/QuickLib
 
 
@@ -36,17 +36,7 @@ interface
 uses
 uses
   Classes,
   Classes,
   SysUtils,
   SysUtils,
-  {$IFDEF DELPHIRX102_UP}
-    JSON.Types,
-    REST.Json,
-    System.JSON,
-    JSON.Serializers,
-  {$ELSE}
-    System.JSON,
-    REST.JSON,
-    Rest.Json.Types,
-  {$ENDIF}
-  Quick.Json.Utils;
+  Quick.Json.Serializer;
 
 
 type
 type
   TObjectHelper = class helper for TObject
   TObjectHelper = class helper for TObject
@@ -65,24 +55,17 @@ var
 implementation
 implementation
 
 
 function TObjectHelper.ToJSON : string;
 function TObjectHelper.ToJSON : string;
-{$IFDEF DELPHIRX102_UP}
 var
 var
-    Serializer : TJsonSerializer;
-  {$ENDIF}
+  Serializer : TJsonSerializer;
 begin
 begin
   Result := '';
   Result := '';
   try
   try
-    {$IFDEF DELPHIRX102_UP}
-      Serializer := TJsonSerializer.Create;
-      try
-        if GlobalJsonIdenter then Serializer.Formatting := TJsonFormatting.Indented;
-        Result := Serializer.Serialize<TObject>(Self);
-      finally
-        Serializer.Free;
-      end;
-    {$ELSE}
-      Result := TJson.ObjectToJsonString(Self);
-    {$ENDIF}
+    Serializer := TJsonSerializer.Create(TSerializeLevel.{$IFDEF FPC}slPublishedProperty{$ELSE}slPublicProperty{$ENDIF},True);
+    try
+      Result := Serializer.ObjectToJson(Self,GlobalJsonIdenter);
+    finally
+      Serializer.Free;
+    end;
   except
   except
     on e : Exception do raise Exception.Create(e.Message);
     on e : Exception do raise Exception.Create(e.Message);
   end;
   end;
@@ -90,14 +73,14 @@ end;
 
 
 procedure TObjectHelper.FromJson(const json :string);
 procedure TObjectHelper.FromJson(const json :string);
 var
 var
-  jObj : TJSONObject;
+  Serializer : TJsonSerializer;
 begin
 begin
   try
   try
-    jObj := TJSonObject.ParseJSONValue(json,true) as TJSONObject;
+    Serializer := TJsonSerializer.Create(TSerializeLevel.{$IFDEF FPC}slPublishedProperty{$ELSE}slPublicProperty{$ENDIF},True);
     try
     try
-      TJson.JsonToObject(self,jObj);
+      Serializer.JsonToObject(Self,json);
     finally
     finally
-      jObj.Free;
+      Serializer.Free;
     end;
     end;
   except
   except
     on e : Exception do raise Exception.Create(e.Message);
     on e : Exception do raise Exception.Create(e.Message);

+ 14 - 6
Quick.Json.Serializer.pas

@@ -1,13 +1,13 @@
 { ***************************************************************************
 { ***************************************************************************
 
 
-  Copyright (c) 2015-2019 Kike Pérez
+  Copyright (c) 2015-2020 Kike Pérez
 
 
   Unit        : Quick.JSON.Serializer
   Unit        : Quick.JSON.Serializer
   Description : Json Serializer
   Description : Json Serializer
   Author      : Kike Pérez
   Author      : Kike Pérez
   Version     : 1.10
   Version     : 1.10
   Created     : 21/05/2018
   Created     : 21/05/2018
-  Modified    : 16/12/2019
+  Modified    : 16/01/2020
 
 
   This file is part of QuickLib: https://github.com/exilon/QuickLib
   This file is part of QuickLib: https://github.com/exilon/QuickLib
 
 
@@ -1566,10 +1566,14 @@ function TJsonSerializer.JsonToObject(aType: TClass; const aJson: string): TObje
 var
 var
   json: TJSONObject;
   json: TJSONObject;
 begin
 begin
-  {$If Defined(FPC) OR Defined(DELPHIRX10_UP)}
+  {$IFDEF DELPHIRX10_UP}
   json := TJSONObject.ParseJSONValue(aJson,True) as TJSONObject;
   json := TJSONObject.ParseJSONValue(aJson,True) as TJSONObject;
   {$ELSE}
   {$ELSE}
-  json := TJsonObject.ParseJSONValue(TEncoding.UTF8.GetBytes(aJson),0,True) as TJSONObject;
+   {$IFDEF FPC}
+   json := TJSONObject(TJSONObject.ParseJSONValue(aJson,True));
+   {$ELSE}
+   json := TJsonObject.ParseJSONValue(TEncoding.UTF8.GetBytes(aJson),0,True) as TJSONObject;
+   {$ENDIF}
   {$ENDIF}
   {$ENDIF}
   try
   try
     Result := fRTTIJson.DeserializeClass(aType,json);
     Result := fRTTIJson.DeserializeClass(aType,json);
@@ -1582,10 +1586,14 @@ function TJsonSerializer.JsonToObject(aObject: TObject; const aJson: string): TO
 var
 var
   json: TJSONObject;
   json: TJSONObject;
 begin;
 begin;
-  {$If Defined(FPC) OR Defined(DELPHIRX10_UP)}
+  {$IFDEF DELPHIRX10_UP}
   json := TJSONObject.ParseJSONValue(aJson,True) as TJSONObject;
   json := TJSONObject.ParseJSONValue(aJson,True) as TJSONObject;
   {$ELSE}
   {$ELSE}
-  json := TJsonObject.ParseJSONValue(TEncoding.UTF8.GetBytes(aJson),0,True) as TJSONObject;
+   {$IFDEF FPC}
+   json := TJSONObject(TJSONObject.ParseJSONValue(aJson,True));
+   {$ELSE}
+   json := TJsonObject.ParseJSONValue(TEncoding.UTF8.GetBytes(aJson),0,True) as TJSONObject;
+   {$ENDIF}
   {$ENDIF}
   {$ENDIF}
   try
   try
     Result := fRTTIJson.DeserializeObject(aObject,json);
     Result := fRTTIJson.DeserializeObject(aObject,json);