Ich habe das folgende Objekt und versuch es mit dem DMVC-Framework zu serialisieren und de-serialisieren.
Delphi-Quellcode:
TCardsAgainstHumanityJSON = class
private
FBlackCards : TBlackCardsList;
FDescription : string;
FExpansion : Boolean;
FName : string;
FWatermark : string;
FWhiteCards : TList<String>;
public
[MapperListOf(TBlackCards)]
property blackCards : TBlackCardsList read FBlackCards write FBlackCards;
property description : string read FDescription write FDescription;
property expansion : Boolean read FExpansion write FExpansion;
property name : string read FName write FName;
property watermark : string read FWatermark write FWatermark;
property whiteCards : TList<string> read FWhiteCards write FWhiteCards;
constructor Create;
destructor Destroy; override;
function ToJsonString: string;
class function FromJsonString(const JsonString: string): TCardsAgainstHumanityJSON;
end;
{...}
constructor TCardsAgainstHumanityJSON.Create;
begin
Inherited;
FBlackCards := TBlackCardsList.Create(True);
FWhiteCards := TList<String>.Create();
end;
destructor TCardsAgainstHumanityJSON.Destroy;
begin
FBlackCards.Free;
FWhiteCards.Free;
inherited;
end;
function TCardsAgainstHumanityJSON.ToJsonString: string;
begin
Result := Mapper.ObjectToJSONObjectString(Self);
end;
class function TCardsAgainstHumanityJSON.FromJsonString(const JsonString: string): TCardsAgainstHumanityJSON;
begin
Result := Mapper.JSONObjectStringToObject<TCardsAgainstHumanityJSON>(JsonString);
end;
FromJsonString klappt einwandfrei. Mapper.ObjectToJSONObjectString versucht im inneren jedoch whiteCards als Objektliste zu behandeln, das rennt jedoch in eine ungültige Typumwandlung. Ich hab auch schon versucht whiteCards als TArray<string> zu deklarieren, nur befüllt JSONObjectStringToObject das leider nicht. Muss ich vlt. noch ein Attribut setzen oder übersehe ich noch etwas?