Einzelnen Beitrag anzeigen

Necrotarch

Registriert seit: 31. Jan 2017
3 Beiträge
 
#1

DMVC Mapper.ObjectToJSONObjectString und StringList? Array?

  Alt 31. Jan 2017, 18:44
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?
  Mit Zitat antworten Zitat