Skip to content

Commit

Permalink
Added serialization/deserialization of lists of simple types as root (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
JakobYde authored Jul 19, 2024
1 parent 051e778 commit d804f47
Showing 1 changed file with 88 additions and 9 deletions.
97 changes: 88 additions & 9 deletions sources/MVCFramework.Serializer.JsonDataObjects.CustomTypes.pas
Original file line number Diff line number Diff line change
Expand Up @@ -636,8 +636,18 @@ procedure TMVCListOfStringSerializer.DeserializeAttribute(

procedure TMVCListOfStringSerializer.DeserializeRoot(const ASerializerObject,
AObject: TObject; const AAttributes: TArray<TCustomAttribute>);
var
lList: TList<string>;
lJsonArray: TJsonArray;
i: Integer;
begin
raise EMVCDeserializationException.Create('Not implemented');
lList := TMVCListOfString(AObject);
lList.Clear;
lJsonArray := ASerializerObject as TJsonArray;
for i := 0 to lJsonArray.Count - 1 do
begin
lList.Add(lJsonArray[i].Value);
end;
end;

procedure TMVCListOfStringSerializer.SerializeAttribute(
Expand All @@ -660,8 +670,18 @@ procedure TMVCListOfStringSerializer.SerializeAttribute(
procedure TMVCListOfStringSerializer.SerializeRoot(const AObject: TObject;
out ASerializerObject: TObject; const AAttributes: TArray<TCustomAttribute>;
const ASerializationAction: TMVCSerializationAction);
var
lList: TList<string>;
lRoot: TJDOJsonArray;
i: Integer;
begin
raise EMVCDeserializationException.Create('Not implemented');
lList := AObject as TList<string>;
lRoot := TJDOJsonArray.Create;
for i := 0 to lList.Count - 1 do
begin
lRoot.Add(lList[i]);
end;
ASerializerObject := lRoot;
end;

{ TMVCListOfIntegerSerializer }
Expand All @@ -686,8 +706,18 @@ procedure TMVCListOfIntegerSerializer.DeserializeAttribute(

procedure TMVCListOfIntegerSerializer.DeserializeRoot(const ASerializerObject,
AObject: TObject; const AAttributes: TArray<TCustomAttribute>);
var
lList: TList<Integer>;
lJsonArray: TJsonArray;
i: Integer;
begin
raise EMVCDeserializationException.Create('Not implemented');
lList := TMVCListOfInteger(AObject);
lList.Clear;
lJsonArray := ASerializerObject as TJsonArray;
for i := 0 to lJsonArray.Count - 1 do
begin
lList.Add(lJsonArray.I[i]);
end;
end;

procedure TMVCListOfIntegerSerializer.SerializeAttribute(
Expand All @@ -710,9 +740,18 @@ procedure TMVCListOfIntegerSerializer.SerializeAttribute(
procedure TMVCListOfIntegerSerializer.SerializeRoot(const AObject: TObject;
out ASerializerObject: TObject; const AAttributes: TArray<TCustomAttribute>;
const ASerializationAction: TMVCSerializationAction);
var
lList: TList<Integer>;
lRoot: TJDOJsonArray;
i: Integer;
begin
raise EMVCDeserializationException.Create('Not implemented');

lList := AObject as TList<Integer>;
lRoot := TJDOJsonArray.Create;
for i := 0 to lList.Count - 1 do
begin
lRoot.Add(lList[i]);
end;
ASerializerObject := lRoot;
end;

{ TMVCListOfBooleanSerializer }
Expand All @@ -737,8 +776,18 @@ procedure TMVCListOfBooleanSerializer.DeserializeAttribute(

procedure TMVCListOfBooleanSerializer.DeserializeRoot(const ASerializerObject,
AObject: TObject; const AAttributes: TArray<TCustomAttribute>);
var
lList: TList<Boolean>;
lJsonArray: TJsonArray;
i: Integer;
begin
raise EMVCDeserializationException.Create('Not implemented');
lList := TMVCListOfBoolean(AObject);
lList.Clear;
lJsonArray := ASerializerObject as TJsonArray;
for i := 0 to lJsonArray.Count - 1 do
begin
lList.Add(lJsonArray.B[i]);
end;
end;

procedure TMVCListOfBooleanSerializer.SerializeAttribute(
Expand All @@ -761,8 +810,18 @@ procedure TMVCListOfBooleanSerializer.SerializeAttribute(
procedure TMVCListOfBooleanSerializer.SerializeRoot(const AObject: TObject;
out ASerializerObject: TObject; const AAttributes: TArray<TCustomAttribute>;
const ASerializationAction: TMVCSerializationAction);
var
lList: TList<Boolean>;
lRoot: TJDOJsonArray;
i: Integer;
begin
raise EMVCDeserializationException.Create('Not implemented');
lList := AObject as TList<Boolean>;
lRoot := TJDOJsonArray.Create;
for i := 0 to lList.Count - 1 do
begin
lRoot.Add(lList[i]);
end;
ASerializerObject := lRoot;
end;

{ TMVCListOfExtendedSerializer }
Expand All @@ -787,8 +846,18 @@ procedure TMVCListOfDoubleSerializer.DeserializeAttribute(

procedure TMVCListOfDoubleSerializer.DeserializeRoot(const ASerializerObject,
AObject: TObject; const AAttributes: TArray<TCustomAttribute>);
var
lList: TList<Double>;
lJsonArray: TJsonArray;
i: Integer;
begin
raise EMVCDeserializationException.Create('Not implemented');
lList := TMVCListOfDouble(AObject);
lList.Clear;
lJsonArray := ASerializerObject as TJsonArray;
for i := 0 to lJsonArray.Count - 1 do
begin
lList.Add(lJsonArray.F[i]);
end;
end;

procedure TMVCListOfDoubleSerializer.SerializeAttribute(
Expand All @@ -812,8 +881,18 @@ procedure TMVCListOfDoubleSerializer.SerializeAttribute(
procedure TMVCListOfDoubleSerializer.SerializeRoot(const AObject: TObject;
out ASerializerObject: TObject; const AAttributes: TArray<TCustomAttribute>;
const ASerializationAction: TMVCSerializationAction);
var
lList: TList<Double>;
lRoot: TJDOJsonArray;
i: Integer;
begin
raise EMVCDeserializationException.Create('Not implemented');
lList := AObject as TList<Double>;
lRoot := TJDOJsonArray.Create;
for i := 0 to lList.Count - 1 do
begin
lRoot.Add(lList[i]);
end;
ASerializerObject := lRoot;
end;

end.

0 comments on commit d804f47

Please sign in to comment.