浏览代码

Json.Helper fixed

Exilon 5 年之前
父节点
当前提交
34a3f59392
共有 1 个文件被更改,包括 14 次插入31 次删除
  1. 14 31
      Quick.JSON.Helper.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
   Description : Utils for working with JSON
   Author      : Kike Pérez
   Version     : 1.1
   Created     : 27/01/2017
-  Modified    : 09/05/2018
+  Modified    : 16/01/2020
 
   This file is part of QuickLib: https://github.com/exilon/QuickLib
 
@@ -36,17 +36,7 @@ interface
 uses
   Classes,
   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
   TObjectHelper = class helper for TObject
@@ -65,24 +55,17 @@ var
 implementation
 
 function TObjectHelper.ToJSON : string;
-{$IFDEF DELPHIRX102_UP}
 var
-    Serializer : TJsonSerializer;
-  {$ENDIF}
+  Serializer : TJsonSerializer;
 begin
   Result := '';
   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
     on e : Exception do raise Exception.Create(e.Message);
   end;
@@ -90,14 +73,14 @@ end;
 
 procedure TObjectHelper.FromJson(const json :string);
 var
-  jObj : TJSONObject;
+  Serializer : TJsonSerializer;
 begin
   try
-    jObj := TJSonObject.ParseJSONValue(json,true) as TJSONObject;
+    Serializer := TJsonSerializer.Create(TSerializeLevel.{$IFDEF FPC}slPublishedProperty{$ELSE}slPublicProperty{$ENDIF},True);
     try
-      TJson.JsonToObject(self,jObj);
+      Serializer.JsonToObject(Self,json);
     finally
-      jObj.Free;
+      Serializer.Free;
     end;
   except
     on e : Exception do raise Exception.Create(e.Message);