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