Components

Wygenerowanie JSON na podstawie listy obiektów

Prostą funkcją, która pozwala nam na przekształcenie listy obiektów do formatu JSON jest funkcja TJson.ObjectToJSonString z modułu REST. Poniżej przedstawię krótki kod odpowiedzialny za przygotowanie danych z poziomu serwera WWW (TIdHTTPServer).

Najpierw kod klasy (obiektu), jest to klasa Osoba z trzema właściwościami:

TOsoba = class(TObject)
 private
 FImie: string;
 FNazwisko: string;
 FPlec: string;
 protected
 public
 constructor Create(AImie, ANazwisko, APlec: string);
 property Imie: string read FImie write FImie;
 property Nazwisko: string read FNazwisko write FNazwisko;
 property Plec: string read FPlec write FPlec;
 end;

Następnie w zdarzeniu CommandGet serwera TIdHTTPServer przygotowujemy dane:

procedure TmkMainForm.webServerCommandGet(AContext: TIdContext;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
 if ARequestInfo.URI = '/osoby.json' then
 begin
 AResponseInfo.CharSet := 'utf-8';
 AResponseInfo.ContentType := 'application/json';
 AResponseInfo.ContentText := PrzygotujJSON;
 end;
end;

,gdzie funkcja PrzygotujJSON ma postać:

function TmkMainForm.PrzygotujJSON: string;
var
 FOsoby : TObjectList<TOsoba>;
begin
 FOsoby := TObjectList<TOsoba>.Create(True);
 FOsoby.Add(TOsoba.Create('Adam','Mickiewicz','M'));
 FOsoby.Add(TOsoba.Create('Jan','Nowak','M'));
 FOsoby.Add(TOsoba.Create('Genowefa','Pigwa','K'));
 Result := TJson.ObjectToJSonString(FOsoby);
 FOsoby.Free;
end;